ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

__attribute__((constructor))

__attribute__((constructor))

转自:https://blog.csdn.net/accumla/article/details/96161462

__attribute__((constructor)) 先于main()函数调用

__attribute__((destructor)) 在main()函数后调用

#include <stdio.h> #include <stdlib.h> static void before(void) __attribute__((constructor)); static void after(void) __attribute__((destructor)); static void before() { printf("before main\n"); } static void after(void) { printf("after main\n"); } int main() { printf("main\n"); return 0; }

运行结果:

补充:优先级

通过参数设置优先级关系

#include <stdio.h> #include <stdlib.h> static void before(void) __attribute__((constructor)); static void before3(void) __attribute__((constructor(103))); static void before2(void) __attribute__((constructor(102))); static void before1(void) __attribute__((constructor(101))); static void before2() { printf("before 102\n"); } static void before1() { printf("before 101\n"); } static void before3() { printf("before 103\n"); } static void before() { printf("before main\n"); } int main() { printf("main\n"); return 0; }

运行结果:

返回列表