打印
[STM32]

关于main函数的那点事

[复制链接]
2096|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
严龙|  楼主 | 2014-11-29 19:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么STM32中必须要以int main()才不会警告!!!main函数有返回值吗?为什么我写一个return  int型的main函数又会报错,,求解释!!!

相关下载

相关帖子

沙发
wangch_sh| | 2014-11-29 21:04 | 只看该作者
51没有,STM32有。

使用特权

评论回复
板凳
huangxz| | 2014-11-29 21:51 | 只看该作者
这些都是编译器定的规矩,一般情况下main是不会返回的,但是在ansi-c里面确实是有返回值的。楼主可以看看较深入的有关c语言的书,
也可以参考此贴
http://nxlhero.blog.51cto.com/962631/703953

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
严龙 + 2 很给力!
地板
diweo| | 2014-11-30 11:05 | 只看该作者
本帖最后由 diweo 于 2014-11-30 11:07 编辑

严格来说,main()不是程序执行的第一个函数,它是被在它前面先执行的代码所调用的,那么编译器对它的返回值类型肯定是有要求的。
但是main()函数又很特殊,里面需要有个死循环。所以如果你在它最后显式的return的话,编译器会警告执行不到return语句。
这确实有点矛盾,但是特殊对象要特殊对待,不要钻牛角尖。

使用特权

评论回复
5
ningling_21| | 2014-11-30 11:38 | 只看该作者
main函数不但有返回值还有2个参数,但嵌入式环境下根本不需要,所以参数省略了

使用特权

评论回复
6
严龙|  楼主 | 2014-11-30 18:16 | 只看该作者
diweo 发表于 2014-11-30 11:05
严格来说,main()不是程序执行的第一个函数,它是被在它前面先执行的代码所调用的,那么编译器对它的返回值 ...

哦哦,谢谢

使用特权

评论回复
7
严龙|  楼主 | 2014-11-30 18:17 | 只看该作者
ningling_21 发表于 2014-11-30 11:38
main函数不但有返回值还有2个参数,但嵌入式环境下根本不需要,所以参数省略了 ...

谢谢、、

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

16

帖子

0

粉丝