📜  在C中main()之前和之后执行的函数

📅  最后修改于: 2021-05-25 22:50:47             🧑  作者: Mango

使用GCC系列C编译器,我们可以标记一些要在main()之前和之后执行的函数。因此,可以在main()开始之前执行一些启动代码,而可以在main()结束之后执行一些清除代码。例如,在下面的程序中,在main()之前调用myStartupFun(),在main()之后调用myCleanupFun()。

#include
  
/* Apply the constructor attribute to myStartupFun() so that it
    is executed before main() */
void myStartupFun (void) __attribute__ ((constructor));
  
  
/* Apply the destructor attribute to myCleanupFun() so that it
   is executed after main() */
void myCleanupFun (void) __attribute__ ((destructor));
  
  
/* implementation of myStartupFun */
void myStartupFun (void)
{
    printf ("startup code before main()\n");
}
  
/* implementation of myCleanupFun */
void myCleanupFun (void)
{
    printf ("cleanup code after main()\n");
}
  
int main (void)
{
    printf ("hello\n");
    return 0;
}

输出:

startup code before main()
hello
cleanup code after main()

与上述功能一样,GCC在标准C语言中添加了许多其他有趣的功能。有关更多详细信息,请参见此内容。

相关文章:
在后台执行C中的main()

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。