__attribute__((constructor)):被修饰的函数在main函数之前调用
__attribute__((destructor)):被修饰的函数在main函数之后调用
-
#include <stdio.h>
-
#include <stdlib.h>
-
-
static void __attribute__ ((constructor)) __reg_module(void)
-
{
-
printf("__reg_module called.\n");
-
}
-
-
static void __attribute__ ((destructor)) __unreg_module(void)
-
{
-
printf("__unreg_module called.\n");
-
}
-
-
int main(int argc, const char *argv[])
-
{
-
printf("main called.\n");
-
-
return 0;
-
}
打印结果如下:
-
__reg_module called.
-
main called.
-
__unreg_module called.
注意:
#1) 可执行程序或库文件都可以使用此属性修饰函数;
#2) 同一个可执行程序或库文件允许多个函数被修饰,执行顺序由代码编写顺序或编译链接顺序有关;
#3) 全局变量(对象)的构造和析构函数分别会在__attribute__((constructor))和__attribute__((destructor))二者修饰的函数之前运行;
阅读(1989) | 评论(0) | 转发(0) |