c语言参见main的前一个定义,C语言main函数必不可少,一起来了解C语言main函数

C语言标准规定了在操作系统环境下程序的入口通常是main函数,但在无操作系统环境中入口可以自定义。在Linux下,若指定其他入口函数如mymain,需要使用特定编译选项(-e和-nostartfiles)。main函数作为约定的用户代码入口,但允许改变。文章探讨了C程序执行环境、链接器的作用以及如何指定程序入口。
摘要由CSDN通过智能技术生成

C语言标准在一开始(C90标准 5.1.2条),就规定了程序的执行环境。对于没有操作系统的环境来说,C程序的入口函数是什么都可以(也就是说的在单片机的C程序里,或者在操作系统的底层代码的C入口处,不需要是main函数)。

对于有操作系统的环境来说(C入门者学习C的环境),C程序的入口是main函数。而且声明为以下两者之一

int main(void);

int main(int argc, char * argv[]);

对于 操作系统的执行环境的具体实现来说,链接器会把“你写的C程序(以main开头)”和另外的启动程序相链接,而那些启动程序里面会引用你写的main函数。这样从程序员的视角来看,“C程序的入口”是main。

但是如果我们要指定我们的程序的入口为mymain 时,在linux下编译直接出现undefined reference to `main'的错误

a8a7728d1ce64461e158306649eeb27c.png

C语言没说C程序一定要有main()函数。c的编译器工作之前先要做cpp(比如头文件展开)一样,编译完了以后还要链接成可执行文件。链接的时候需要知道程序的入口是什么。不管是什么总归得有的名字,所以main被选中了。你不喜欢这个名字,可以指定你自己的入口。

参见如下文档的 -e 或者--entry参数。

main函数就是这个约定好的用户代码默认入口

gcc hello.c -e mymain -nostartfiles 编译后发现我们的可执行文件a.out生成了,并且执行是,我们的hello linux也出现了

-e参数指定我们的程序的入口

-nostartfiles 连接的时候不使用标准系统的启动文件

b8efa51a8d7f62b417eb89bbea2f718c.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值