码迷,mamicode.com
首页 > 其他好文 > 详细

GCC的__attribute__ ((constructor))和__attribute__ ((destructor))

时间:2018-07-11 12:19:06      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:c99   closed   ide   turn   eve   %s   rem   str   简单的   

    通过一个简单的例子介绍一下gcc的__attribute__ ((constructor))属性的作用。gcc允许为函数设置__attribute__ ((constructor))和__attribute__ ((destructor))两种属性,顾名思义,就是将被修饰的函数作为构造函数或析构函数。程序员可以通过类似下面的方式为函数设置这些属性:  

void funcBeforeMain() __attribute__ ((constructor)); 

void funcAfterMain() __attribute__ ((destructor));

也可以放在函数名之前:
void __attribute__ ((constructor)) funcBeforeMain();
void __attribute__ ((destructor)) funcAfterMain();
带有(constructor)属性的函数将在main()函数之前被执行,而带有(destructor)属性的函数将在main()退出时执行。
下面给出一个简单的例子:
技术分享图片
 1 #include <stdio.h>
 2 
 3 void __attribute__((constructor)) funcBeforeMain()
 4 {
 5     printf("%s...\n", __FUNCTION__);
 6 }
 7 
 8 void __attribute__((destructor)) funcAfterMain()
 9 {
10     printf("%s...\n", __FUNCTION__);
11 }
12 
13 int main()
14 {
15     printf("main...\n");
16     return 0;
17 }
View Code

运行结果:

funcBeforeMain...
main...
funcAfterMain...

GCC的__attribute__ ((constructor))和__attribute__ ((destructor))

标签:c99   closed   ide   turn   eve   %s   rem   str   简单的   

原文地址:https://www.cnblogs.com/dylancao/p/9293447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!