0%

C语言的构造函数与析构函数

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
# gcc main.c
# ./a.out
constructor run...
Hello world!
destructor run...

欢迎关注我的其它发布渠道