c/c++怎样在程序的入口处main()函数之前和之后执行另外的自定义函数
来源:互联网 发布:淘宝联盟采集工具 编辑:程序博客网 时间:2024/05/21 22:57
(一)
一般对于遵循GNU 规范的c 编译器,例如gcc(3.0以及 以上版本)具有__attribute__机制,而对于非GNU的c 编译器例如vc等,也可以做到在main()之前或者之后执行其他函数,如果不能也能做到和非GNU编译器的兼容。因为__attribute__设计的非常巧妙,很容易作到和其它编译器保持兼容,也就是说,如果工作在其它的非GNU编译器上,可以很容易的忽略该属性。通过预处理就可以实现。
#ifndef __GNUC__
#define __attribute__(x) //*nothing
#endif
另外,__attribute__属性约束通常是针对函数的声明而不是定义。
(二)
example01 c-free5.0 : mingw(采用的gcc 3.4.5)
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/c++怎样在程序的入口处main()函数之前和之后执行另外的自定义函数
- 一个c程序在执行main函数之前和main之后都做了那些事情啊
- C/C++在main函数之前和之后会做些什么
- 在main函数执行之前和执行之后执行的方法
- 在main函数执行之前和执行之后执行的方法<转载>
- 在main函数执行之前和执行之后执行的方法
- 在main函数执行之前和之后执行一段代码
- 在main()之前和之后调用自己的函数
- 在main函数之前和之后执行一些操作
- 如何让一段程序在main函数之前执行的
- 在主函数main()之后再执行另外一个函数的方法
- C语言 设置在main 之前运行的函数
- 发生在main函数之前的故事(C语言)
- C语言 设置在main 之前运行的函数
- 在纯C工程的main函数之前跑代码
- main函数入口处的段错误
- static变量在Main函数之前执行分析(C++)
- c语言中在main函数之前会执行什么
- 树状数组的学习
- 《Microsoft SQL Server 2008 MDX Step by Step》学习笔记二:理解元数组(Tuples)
- struts2下载文件,报找不到站点,是它的问题还是我的问题?
- linux下项目开发中防止重复定义和重复包含的方法
- Struts2上传文件代码
- c/c++怎样在程序的入口处main()函数之前和之后执行另外的自定义函数
- 10款对开发者有用的Android应用
- 20110612-toolStrip这样调整宽度
- https与http切换
- HDU 2000 ASCII码排序
- 腾讯微博Android客户端开发——算法、编码、辅助方法编写
- Ubuntu 上安装 ibus云拼音输入法
- oc文件组织
- 写给新手程序员的一封信