c语言程序总是从main函数开始执行吗?

您所在的位置:网站首页 一个c程序的执行是从 c语言程序总是从main函数开始执行吗?

c语言程序总是从main函数开始执行吗?

2024-07-03 04:20| 来源: 网络整理| 查看: 265

答案是否定的!为什么呢?

一、在Linux C中,使用attribute关键字,声明constructor和destructor,可以自定义程序入口点,不一定是在main函数开始执行。

#include __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; }

编译执行,结果为: before_main main after_main

二、在标准C中,编译器在编译的时候把你的程序开始执行的地址设为main函数的地址,汇编中可以自由的通过end伪指令制定。 在vs中给你可以通过这么设置: 项目->属性->配置属性->连接器->高级->入口点,改为你想做入口点的函数名

比如我有代码: void print() { printf(“hello world\n”); } 你就可以点击编辑 填写 print就可以了,他就从print开始执行,而不是main制定入口地址是编译器做的,默认。

三、在单片机C中,C程序运行前都有一点汇编写的启动程序,里面对单片机进行的初始化,同时设置了C程序的入口为main函数。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3