答案是否定的!

在gcc中,可以使用attribute关键字,声明constructor和destructor,代码如下:
[cpp] view plaincopy
#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中,可以使用如下方法:
[cpp] view plaincopy
#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函数开始执行函数吗?相关推荐

  1. 关于linuxC语言中创建进程,利用execlp函数执行.c程序问题

    关于linuxC语言中创建进程,利用execlp函数执行.c程序问题 对于一个小白来说,这个系统调用真的太难了,完全摸不着头脑啊,一搜execlp函数,全是执行的命令,什么传参硬是没懂. 不过说到底, ...

  2. c语言 字符串 strncpy,详解c语言中的 strcpy和strncpy字符串函数使用

    详解c语言中的 strcpy和strncpy字符串函数使用 strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,cha ...

  3. 在C语言中以编程的方式获取函数名

    在C语言中以编程的方式获取函数名 仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧. 对象反射库.调试工具及 ...

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

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

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

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

  6. c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...

    C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...

  7. C语言中常见的四个内存函数

    前言 我们为什么要用内存操作函数? 内存函数,是通过访问地址的方式操作对象,因此可应用于任何类型对象,只要按照字节操作 1. memcpy void * memcpy ( void * destina ...

  8. c语言中结构体类型定义的函数指针,结构体中定义函数指针

    结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...

  9. C语言中随机数的生成(rand函数和srand函数)

    CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程.这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路.学习之乐,独乐乐,不如众乐 ...

  10. c语言中函数static变量,[转]C语言中的 static变量、static函数

    1. static 变量 静态变量的类型 说明符是 static. 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量. 例如外部变量虽属于静态 存储方式,但不一定是静态变量, ...

最新文章

  1. SpringMVC的文件上传和拦截器
  2. Akka的Hello World(一)Akka的Actor架构
  3. Attempt to execute SCRIPT plot as a function?
  4. threadgroup_Java ThreadGroup toString()方法与示例
  5. 程序员的算法课(13)-分治法
  6. 滇西应用技术大学有没有计算机专业,学校介绍
  7. Java下载安装及环境配置
  8. 如何利用迅捷PDF编辑器在PDF文档上修改文字大小和颜色
  9. linux u盘读取速度,linux dd命令测试U盘读写速度
  10. can和could的用法_can和could的区别和用法
  11. 【ESP8266+STM32】获取B站粉丝数,并在STM32屏上显示出来(物联网小项目)
  12. 精通 Windows Server 2008 R2
  13. 计算机垃圾桶桌面,电脑桌面比垃圾桶还乱?一分钟轻松快速整理你的电脑桌面...
  14. Error creating bean with name 'redisTemplate' defined in URL
  15. java线程状态研究
  16. 项目管理:PMP、IPMP、CPMP之间区别
  17. 吉林建筑大学计算机科学技术,吉林建筑大学计算机科学与技术专业2015年在吉林理科高考录取最低分数线...
  18. Bigo的Java面试,我挂在了第三轮技术面上.........
  19. 对于一些常用的R语言的算法包的归纳(修改)
  20. 华为手机关闭蓝牙开发搜索_大众速腾手机无法搜索车载蓝牙系统维修实例

热门文章

  1. 适合0基础的web开发系列教程-canvas
  2. 今日SGU 5.20
  3. 为linux服务器安装rkhunter工具
  4. 《中国人工智能学会通讯》——11.64 基于成对约束的属性特征选择
  5. 随办——真正懂企业痛点的移动协作软件
  6. 自然语言处理与中文分词的难点总结--学习笔记
  7. OpenSolaris安装JDK以及配置java开发环境
  8. HP5200打印机从控制面板手动配置TCP/IP 参数
  9. TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载...
  10. 小米正式开源 Istio 管理面板 Naftis