__attribute__((constructor))和__attribute__((destructor))

Posted 木析

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了__attribute__((constructor))和__attribute__((destructor))相关的知识,希望对你有一定的参考价值。

__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。

__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数

__attribute__语法格式为:attribute ( ( attribute-list ) )


如果函数被设定为constructor属性,则该函数会在main()函数执行之前被自动的执行;

若函数被设定为destructor属性,则该函数会在main()函数执行之后或者exit()被调用后被自动的执行。

__attribute__((constructor))和__attribute__((destructor))在可执行文件或者库文件里都可以生效

全局变量对象的构造函数和析构函数分别在__attribute__((constructor))和__attribute__((destructor))标志的函数之前调用。


参考博客:

https://blog.csdn.net/sun172270102/article/details/88227519

https://blog.csdn.net/tianmohust/article/details/45310349?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

以上是关于__attribute__((constructor))和__attribute__((destructor))的主要内容,如果未能解决你的问题,请参考以下文章

__attribute__

__attribute__ ((__packed__)); 怎么用?

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

gcc之__attribute__简介及对齐参数介绍

__attribute__((destructor)) 修饰函数

__ATTRIBUTE__ 知多少?