参考:https://www.jianshu.com/p/dd425b9dc9db
attribute介绍:
在C/C++编程中,attribute((constructor)) 是一个GCC编译器特有的属性,用于指定函数在 main() 函数执行之前自动执行,而 attribute((destructor)) 则指定函数在 main() 函数执行之后或 exit() 被调用后执行。这些函数通常用于初始化和清理程序中隐式使用的数据。
作用总结:
constructor参数: 让系统执行main()函数之前调用函数(被__attribute__((constructor))修饰的函数).同理, destructor让系统在main()函数退出或者调用了exit()之后,调用我们的函数.带有这些修饰属性的函数,对于我们初始化一些在程序中使用的数据非常有用.
示例代码:
以下是一个简单的示例,展示了如何使用 attribute((constructor)) 和 attribute((destructor)) 属性:
#include <stdio.h>
#include <stdlib.h>
static void before_main(void) __attribute__((constructor));
static void after_main(void) __attribute__((destructor));
static void before_main() {
printf("before main\n");
}
static void after_main(void) {
printf("after main\n");
}
int main() {
printf("main\n");
return 0;
}
运行效果:
before main
main
after main