在gcc中,可以使用attribute关键字,声明constructor和destructor,代码如下:

  1. #include <stdio.h>
  2. __attribute((constructor)) void before_main()
  3. {
  4. printf("%s/n",__FUNCTION__);
  5. }
  6. __attribute((destructor)) void after_main()
  7. {
  8. printf("%s/n",__FUNCTION__);
  9. }
  10. int main( int argc, char ** argv )
  11. {
  12. printf("%s/n",__FUNCTION__);
  13. return 0;
  14. }

vc不支持attribute关键字,在vc中,可以使用如下方法:

  1. #include <stdio.h>
  2. int  main( int argc, char ** argv )
  3. {
  4. printf("%s/n",__FUNCTION__);
  5. return 0;
  6. }
  7. int before_main()
  8. {
  9. printf("%s/n",__FUNCTION__);
  10. return 0;
  11. }
  12. int after_main()
  13. {
  14. printf("%s/n",__FUNCTION__);
  15. return 0;
  16. }
  17. typedef int func();
  18. #pragma data_seg(".CRT$XIU")
  19. static func * before[] = { before_main };
  20. #pragma data_seg(".CRT$XPU")
  21. static func * after[] = { after_main };
  22. #pragma data_seg()

编译执行,上述两段代码的结果均为:

before_main

main

after_main

(vc中可能不支持__FUNCTION__来获得函数名,你可以用另外的方式来获取,比如在befor_main()函数中printf("befor_main()\n");来模拟__FUNCTION__的功能!嘿嘿)

可以在main前后调用多个函数,在gcc下使用attribute声明多个constructor、destructor,vc下在before、after数组中添加多个函数指针。

语言中如何在main函数开始前执行函数相关推荐

  1. 多玩YY语音的面试题 C++中如何在main 函数之前执行操作

    多玩YY语音的面试题:C++中如何在main()函数之前执行操作? 第一反应main()函数是所有函数执行的开始.但是问题是main()函数执行之前如何执行呢? 联想到MFC里面的 C**App类的t ...

  2. atexit函数的执行顺序_多玩YY语音的面试题:C++中如何在main()函数之前执行操作?...

    多玩YY语音的面试题:C++中如何在main()函数之前执行操作? 第一反应main()函数是所有函数执行的开始.但是问题是main()函数执行之前如何执行呢? 联想到MFC里面的 C**App类的t ...

  3. C语言中的带参宏和带参函数的区别

    C语言中的带参宏和带参函数的区别 (1) 带参函数中的形参是变量,因此有类型检查.而带参宏只是简单的字符串替换. (2) 从程序执行的过程来看,带参宏是在预处理阶段被预处理器处理的.而带参函数是在程序 ...

  4. r语言中的或怎么表示什么不同_R语言中灵活运用if实现根据不同条件执行不同的语句...

    原标题:R语言中灵活运用if实现根据不同条件执行不同的语句 在程序语言中,if一般属于一种分支结构,即根据某个条件执行相关的语句,在R中也不例外.同时,if语句与else配合可以运用到多种条件递归判断 ...

  5. js匿名函数和立即执行函数

    js匿名函数和立即执行函数 1. 匿名函数 a)写法 b) 特点 2. 立即执行函数 a) 写法 b) 特点 c) 示例 1. 匿名函数 匿名函数又叫拉姆达函数, 使用前需要先赋值. a)写法 //h ...

  6. 匿名函数与自执行函数

    匿名函数与自执行函数 匿名函数就是指的没有名字的函数,即定义函数对象时不定义函数体名字,但是必须将匿名函数作为表达式赋予一定操作,比如将其作为变量值或者让其自执行,否则这次定义将无意义,解释器也会抛出 ...

  7. 【JS基础】立即执行函数表达式(自执行函数)

    立即执行函数表达式 立即执行函数表达式,大部分人也称为自执行函数. 自执行函数的写法 匿名函数 (function() {console.log(2) })() 具名函数 (function log( ...

  8. main在c语言中的作用,main函数在C语言中是怎么定义的?有什么作用?

    main函数在C语言中是怎么定义的?有什么作用? 更新时间:2019-10-24 13:55 最满意答案 额,main不是程序的最开始啦.拿用glibc的程序来说,C语言执行的过程应该是 _start ...

  9. c语言中总是从main函数开始,C语言总是从main函数开始执行吗

    //-------------------------------------------------------- 本文目录结构 |-提出问题 |-解决问题 |-推荐文章 |-作业 //------ ...

最新文章

  1. 卷积神经网络原理图文详解
  2. SpringBoot+Jquery+Jstree实现企业架构管理
  3. shadowplay要下载java_Java并发程序设计(二)Java并行程序基础
  4. 简单tarjan》一道裸题(BZOJ1051)(easy)
  5. Android:日常学习笔记(6)——探究活动(3)
  6. .NET Core3.1升级.NET5,坑还真不少...
  7. 【MongoDB 工具篇】MongoDB Compass介绍与简单使用
  8. PHP中4个包含文件方法的差异
  9. django启动服务器失败-已解决
  10. 【Linux】修改Linux操作系统字符集与Oracle数据库一致
  11. 恒生Pb系统与讯投PB系统、PTrade交易系统比较
  12. 2022年系统分析师考试大纲
  13. OneTool多平台助手程序网页源码全解版
  14. 边框盒子 box-sizing 的 content-box 和 border-box属性
  15. C语言:输出菱形图案
  16. CSOL NST1007 V1.0 完整汉化版发布
  17. java泛型的上界和下界_java泛型中的上界(extend)和下界(super)
  18. svn强制弹出账号密码对话框
  19. 你见过的最全面的Python重点(附代码演示)
  20. 进程间通信有哪几种方式?进程间通信的方法详解

热门文章

  1. 大型网站技术架构 读书笔记
  2. VBA在EXCEL中创建图形线条
  3. 【Android】Android 设置Activity窗体 不显示标题和全屏显示
  4. C#编写最小化时隐藏为任务栏图标的Window appllication
  5. Godaddy如何导入导出MSSQL数据库
  6. python3最好的书籍推荐-推荐几本Python3相关书籍?最好分一下基础、进阶、高级...
  7. python使用方法-python-tkinter使用方法——转载(一)
  8. python详细安装教程linux-Linux环境下Python的安装方法
  9. 2!=5 or 0在python中是否正确-python 中 and or
  10. python读取excel-Python Pandas读取修改excel操作攻略