C语言中怎么在main函数开始前执行函数
在gcc中,可以使用attribute关键字,声明constructor和destructor,代码如下:
#include <stdio.h>__attribute((constructor)) void before_main()
{
printf("%s/n",__FUNCTION__);
}__attribute((destructor)) void after_main()
{
printf("%s/n",__FUNCTION__);
}int main( int argc, char ** argv )
{
printf("%s/n",__FUNCTION__);
return 0;
}
vc不支持attribute关键字,在vc中,可以使用如下方法:
#include <stdio.h>int
main( int argc, char ** argv )
{
printf("%s/n",__FUNCTION__);return 0;
}
int before_main()
{
printf("%s/n",__FUNCTION__);return 0;
}int after_main()
{
printf("%s/n",__FUNCTION__);return 0;
}typedef int func();
#pragma data_seg(".CRT$XIU")
static func * before[] = { before_main };#pragma data_seg(".CRT$XPU")
static func * after[] = { after_main };#pragma data_seg()
编译执行,上述两段代码的结果均为:
before_main
main
after_main
可以在main前后调用多个函数,在gcc下使用attribute声明多个constructor、destructor,vc下在before、after数组中添加多个函数指针。
您可能感兴趣的文章:
- C语言中怎么在main函数开始前执行函数
- C语言中怎么在main函数开始前执行函数
- C语言中如何在main函数开始前执行函数
- C语言中总是从main函数开始执行函数吗?
- C语言中如何在main函数开始前执行函数
- C语言中如何在main函数开始前执行函数
- C语言中如何在main函数开始前执行函数
- C语言中如何在main函数开始前执行函数
- main函数之前--真正的函数执行入口或开始
- c语言开始执行函数
- main函数之前--真正的函数执行入口或开始
- 语言中如何在main函数开始前执行函数
- main函数之前--真正的函数执行入口或开始
- main函数开始前执行函数
- main函数之前--真正的函数执行入口或开始
- main函数之前--真正的函数执行入口或开始
- 在main函数前后执行的函数之 C语言
- main函数之前--真正的函数执行入口或开始
- C语言中如何在main函数开始前执行函数
- c++中怎么判断_tsystem()函数是否执行成功