OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8024|回复: 11

关于int main(void)函数的那点事

[复制链接]

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-11-16
在线时间
1 小时
发表于 2014-11-29 19:34:27 | 显示全部楼层 |阅读模式
5金钱
为什么STM32中必须要以int main(void)才不会警告!!!main函数有返回值吗?
为什么我写一个return  int型的main函数又会报错,,求解释!!!

最佳答案

累吗?累就对啦,至少证明你还活着
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-29 19:34:28 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

74

帖子

0

精华

初级会员

Rank: 2

积分
199
金钱
199
注册时间
2014-10-15
在线时间
17 小时
发表于 2014-11-29 19:47:32 | 显示全部楼层
同求这个问题  真让人困惑
敢于挑战
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2014-12-1 09:44:44 | 显示全部楼层
return int型。会报错?
int main(void)
{
   
    return 0;
}

标准C里就是这样
当然,main参数在linux下是int argc, char *argv[], 那几个。返回值一般都是0。
小小蜗牛
回复

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-11-16
在线时间
1 小时
 楼主| 发表于 2014-12-1 18:51:44 | 显示全部楼层
回复【4楼】jiutianshenjian:
---------------------------------
我可以不返回0吗,,我让他返回其它的就编译不了了
累吗?累就对啦,至少证明你还活着
回复

使用道具 举报

14

主题

490

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1229
金钱
1229
注册时间
2012-8-4
在线时间
248 小时
发表于 2014-12-1 18:59:19 | 显示全部楼层
返回什么并不重要,正常的话,它永远不会返回的
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-12-2 09:24:14 | 显示全部楼层
都被谭浩强的书害了。。。
学无止境
回复

使用道具 举报

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-11-16
在线时间
1 小时
 楼主| 发表于 2014-12-3 18:31:02 | 显示全部楼层
回复【7楼】jermy_z:
---------------------------------
确实是看他的书,,好像我们大学的C都是他的书
累吗?累就对啦,至少证明你还活着
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2016-1-8
在线时间
10 小时
发表于 2016-3-29 15:21:53 | 显示全部楼层
jermy_z 发表于 2014-12-2 09:24
都被谭浩强的书害了。。。

哈哈~为什么限制6个字?!
回复

使用道具 举报

7

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-10-10
在线时间
16 小时
发表于 2016-10-17 11:25:13 | 显示全部楼层
正好解决了我这个问题!!!!!!!
回复

使用道具 举报

7

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2016-10-10
在线时间
16 小时
发表于 2016-10-17 11:26:56 | 显示全部楼层
写一个return  int型的main函数又会报错?这是什么意思?可否举例说一下!万分感谢!
回复

使用道具 举报

15

主题

50

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2014-10-29
在线时间
37 小时
发表于 2017-8-20 23:55:21 | 显示全部楼层
这个问题说是MDK规定的是对的,但是归根原因是:在.S启动文件中调用的是_main()函数,注意前面的“_”符号,这个是调用mdk提供的一个库函数,里面做了一些有编译器为我们完成的工作:__scatterload()->__rt_entry()->__user_setup_stackheap()主要就是这个流程,这里是不是也明白了我们在.S文件中的__user_setup_stackheap()函数的作用,就是在_main()中调用的;接下来进入我们的main()函数,如果你的main函数是个while循环,main就不返回,否则是要返回的,那么既然返回,那你的返回类型是啥,这在_mian()中是有要求的,因为在_mian中调用了exit()函数来处理我们的main的返回值,所以你写的mian函数要求是int    mian()    return x;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 22:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表