在main函数之前执行代码-C语言__attribute__((constructor))

我们都知道main函数是C语言的入口函数,代码都是从main函数开始执行的。那么问题来了,有没有办法让代码在main函数之前执行哪?

GCC语法支持的__attribute__属性

  • __attribute__((constructor)):在main函数之前执行某个函数;类似类的构造函数。
  • __attribute__((destructor)):在main函数之后执行某个函数;类似类的析构函数。

constructor和destructor会在ELF文件中添加两个段-.ctors和.dtors。当动态库或程序在加载时,会检查是否存在这两个段,如果存在执行对应的代码。

代码示例:

执行结果:

在main函数之前执行代码-C语言__attribute__((constructor))

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注