打印

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

[复制链接]
4999|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
5
后学| | 2007-4-4 11:41 | 只看该作者

而且和硬件平台有关系,

使用特权

评论回复
6
将军令| | 2007-4-5 08:11 | 只看该作者

main里面内嵌while

使用特权

评论回复
7
王紫豪| | 2007-4-5 09:56 | 只看该作者

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

使用特权

评论回复
8
ayb_ice| | 2007-4-5 10:00 | 只看该作者

什么编译器

什么编译器

使用特权

评论回复
9
mxinfa| | 2007-4-5 11:04 | 只看该作者

while应该是必须有的

使用特权

评论回复
10
thw| | 2007-4-5 17:45 | 只看该作者

我用KEIL试过

MAIN是个大循环

使用特权

评论回复
11
HWM| | 2007-4-5 18:02 | 只看该作者

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

程序走到FFFF后又回到了0000。未编程区域的内容为FF(NOP指令)。

使用特权

评论回复
12
ayb_ice| | 2007-4-5 19:37 | 只看该作者

我用KEIL试过

"我用KEIL试过,MAIN是个大循环"
DA SB...

使用特权

评论回复
13
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种

使用特权

评论回复
14
ayb_ice| | 2007-4-6 09:26 | 只看该作者

NOP指令编码不是FF

NOP指令编码不是FF,startup运行后把控制权交给MAIN而已...

使用特权

评论回复
15
11hwu2| | 2012-9-26 21:09 | 只看该作者
根本就是不可能的事情,应该是有其他的原因

使用特权

评论回复
16
duhemayi| | 2012-9-28 08:38 | 只看该作者
不一定是

使用特权

评论回复
17
znmcu| | 2012-9-28 09:22 | 只看该作者
C51,确实程序运行到最后一条之后,就会返回开头重新运行。看似是硬件级的“大循环”,所以一般都最后加一个 while(1) 。但你不能说C语言中的main函数本身就是个大循环。

使用特权

评论回复
18
astudent| | 2012-9-28 11:16 | 只看该作者
没有这样设计的。

使用特权

评论回复
19
liumook| | 2012-9-28 12:46 | 只看该作者
看看

使用特权

评论回复
20
mtraveler| | 2012-9-28 23:12 | 只看该作者
学习了

使用特权

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

本版积分规则

28

主题

46

帖子

0

粉丝