让自己的函数在main函数之前执行

最近在处理一段代码的时候遇到一个问题:一个数据段的指针需要重新设置,想让这个过程用独立的代码实现,而不在main函数中添加新的代码,这就需要一种能在main函数之前运行的机制,网上查了一下,还真有。
 
以下内容摘自网络
 
在 gcc 中
#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 中
#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()
在vc中,使用了预编译指令,将要执行的函数指针设置到.crt$xiu和.crt$xpu数据段就行了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值