请问C语言中的main()函数是不是可以看作一个循环函数?

[复制链接]
6954|19
 楼主| tdhlq 发表于 2007-4-3 21:48 | 显示全部楼层 |阅读模式
我的mian()中包含一个循环函数,我用while来循环这个函数,可我把while去掉后,程序还能正常循环。
平常人 发表于 2007-4-3 21:56 | 显示全部楼层

在C语言中不可以把main()函数看作一个循环函数!

在C语言标准中没有定义main函数返回到哪里,所以不同的C实现有不同的结果,一般是一个停机操作(HALT指令),也可能是一个返回Reset地址的操作,最坏的情况是不做任何处理,这种最坏情况可造成程序乱跑。

你的while去掉后程序还能正常循环,很可能是main返回后回到了Reset地址。即使可以用,也轻易不要这样用,对这种未定义的动作,不知哪天会出事。
computer00 发表于 2007-4-3 22:00 | 显示全部楼层

不能。main函数会执行完. 必须自己写while.

ayb_ice 发表于 2007-4-4 07:48 | 显示全部楼层

随便说说

  现象是正确的,并不能说明过程是正确的...

评分

参与人数 1威望 +1 收起 理由
forgot + 1

查看全部评分

后学 发表于 2007-4-4 11:41 | 显示全部楼层

而且和硬件平台有关系,

将军令 发表于 2007-4-5 08:11 | 显示全部楼层

main里面内嵌while

王紫豪 发表于 2007-4-5 09:56 | 显示全部楼层

不对,不过有的编译器处理了!

ayb_ice 发表于 2007-4-5 10:00 | 显示全部楼层

什么编译器

什么编译器
mxinfa 发表于 2007-4-5 11:04 | 显示全部楼层

while应该是必须有的

thw 发表于 2007-4-5 17:45 | 显示全部楼层

我用KEIL试过

MAIN是个大循环
HWM 发表于 2007-4-5 18:02 | 显示全部楼层

LS:你在不断地软件“复位”呢

程序走到FFFF后又回到了0000。未编程区域的内容为FF(NOP指令)。
ayb_ice 发表于 2007-4-5 19:37 | 显示全部楼层

我用KEIL试过

"我用KEIL试过,MAIN是个大循环"
DA SB...
high 发表于 2007-4-6 09:19 | 显示全部楼层

12楼不要误导

c实现细节取决startup

常见的2种模式

Mode a:
    jump  main
here:
    jump  here

Mode b:
here:
    jump main
    jump here

keil 可能是第2种
ayb_ice 发表于 2007-4-6 09:26 | 显示全部楼层

NOP指令编码不是FF

NOP指令编码不是FF,startup运行后把控制权交给MAIN而已...
11hwu2 发表于 2012-9-26 21:09 | 显示全部楼层
根本就是不可能的事情,应该是有其他的原因
duhemayi 发表于 2012-9-28 08:38 | 显示全部楼层
不一定是
znmcu 发表于 2012-9-28 09:22 | 显示全部楼层
C51,确实程序运行到最后一条之后,就会返回开头重新运行。看似是硬件级的“大循环”,所以一般都最后加一个 while(1) 。但你不能说C语言中的main函数本身就是个大循环。
astudent 发表于 2012-9-28 11:16 | 显示全部楼层
没有这样设计的。
liumook 发表于 2012-9-28 12:46 | 显示全部楼层
mtraveler 发表于 2012-9-28 23:12 | 显示全部楼层
学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

47

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部