C++和JAVA中有构造/析构函数,C语言中也有实现的方法,在gcc下可以使用关键字 __attribute__
指定构造函数或者析构函数。他们由编译器在编译阶段进行处理。
- 声明构造函数:
void __attribute__((constructor)) function(void)
- 声明析构函数:
void __attribute__((destructor)) function(void)
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include <stdio.h>
void __attribute__((constructor)) init(void) { printf("constructor run...\n");; }
void __attribute__((destructor)) fini(void) { printf("destructor run...\n");; }
int main() { printf("Hello world!\n"); return 0; }
|
编译运行:
1 2 3 4 5
|
constructor run... Hello world! destructor run...
|