您的位置:首页 > 大数据 > 人工智能

使用GCC扩展attribute,在main函数外进行操作

2015-08-08 17:01 465 查看
以前知道这个GCC扩展特性,但是一直没有试过。今天写了个小的测试程序试验一下。

#include <stdlib.h>

#include <stdio.h>

static void __attribute__ ((constructor)) my_init()

{

printf("my_init\n");

}

static void __attribute__ ((destructor)) my_fini()

{

printf("my_fini\n");

}

static void exit_clean()

{

printf("exit_clean\n");

}

int main()

{

atexit(exit_clean);

printf("Enter main\n");

return 0;

}

执行结果为:

my_init

Enter main

exit_clean

my_fini

可见,使用__attribute__((constructor))可以使函数在main之前被执行,而__attribute((destructor))可以在main函数执行完毕后执行。其实这两个扩展特性,主要是GCC为C++的全局类的构造和析构函数准备的。但是对于C来说,在特定的情况下,我们同样也可以使用这两个扩展特性,来完成一些特殊的需求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: