#include <stdio.h>
#include <stdlib.h>
static void before(void) __attribute__ ((constructor));
static void after(void) __attribute__ ((destructor));
static void middle(void);
static void before()
{
fprintf(stderr, "In %s %d\n", __func__, __LINE__);
}
static void after()
{
fprintf(stderr, "In %s %d\n", __func__, __LINE__);
}
static void middle()
{
fprintf(stderr, "In %s %d\n", __func__, __LINE__);
}
int main(void)
{
atexit(middle);
return 0;
}
通过指定
static void before(void) __attribute__ ((constructor));
表明这个函数应该在main之前执行
static void after(void) __attribute__ ((destructor));
表明函数在main之后执行
atexit表明函数在退出的时候执行