转自:http://blog.chinaunix.net/uid-24512513-id-3195102.html
今天写一个动态库,需要让动态库有一个类似于windows的DLLMain函数一样功能的函数,可惜发现Linux没有这样的功能,于是查阅了大量的资料,最后发现GCC的__attribute__属性设置可以将函数设置成类似于这样功能的函数:
- __attribute__((constructor)) // 在main函数被调用之前调用
- __attribute__((destructor)) // 在main函数被调用之后调
点击(此处)折叠或打开
- #include<stdio.h>
- __attribute__((constructor)) void before_main() {
- printf("before main\n");
- }
-
- __attribute__((destructor)) void after_main() {
- printf("after main\n");
- }
-
- int main(int argc, char **argv) {
- printf("in main\n");
- return 0;
- }
- before main
- in main
- after main