发新帖我要提问
12
返回列表
打印

单片机中一定要有个main()吗

[复制链接]
楼主: yongzai
手机看帖
扫描二维码
随时随地手机跟帖
21
sedatefire| | 2012-7-12 15:49 | 只看该作者 回帖奖励 |倒序浏览
约定熟成的规矩罢了,无所谓main不main的
单片机执行顺序是这样的
上电-->跳到复位中断向量表--->跳转到初始化启动代码--->
在启动代码里面有类似这样一句话
jmp __main
或者
load  pc, __main
jmp
而.c档中的main函数经过编译器编译后,其词法表示就是__main
所以你可以把mian任意名字命名,只要你改了启动代码里面的对应部分即可

使用特权

评论回复
22
czdo| | 2012-7-12 16:41 | 只看该作者
你只是用汇编,没有main

使用特权

评论回复
23
eydj2008| | 2012-7-12 18:36 | 只看该作者
谁说C语言必须得有  就不能将MAIN搞一个 X()  Y() .... ?
这是由汇编的启动文件决定的 既然启动文件定义为MAIN() 大家都照这样执行罢了  表示程序从这里(这个地址)开始执行

使用特权

评论回复
24
qq65411253| | 2012-7-12 19:04 | 只看该作者
汇编不用main。而用操作系统则可以有多个main,main退出后即返回操作系统。

使用特权

评论回复
25
zcx2012| | 2012-7-12 19:09 | 只看该作者
这个是C语言规定的

使用特权

评论回复
26
rush1988| | 2012-7-12 19:54 | 只看该作者
这个就跟“1+1=2”似的,就是这样规定的。

使用特权

评论回复
27
杜专| | 2012-7-12 20:47 | 只看该作者
可以 不要写MAIN  换个名字也行  有的编译器可以设置的

使用特权

评论回复
28
雷影少年| | 2012-7-12 21:39 | 只看该作者
换个名字和用main有区别吗?
感觉都是一样的,不过是另一种形式的main罢了

使用特权

评论回复
29
fjzzclc| | 2012-7-13 14:44 | 只看该作者
只有一个MAIN

使用特权

评论回复
30
dlyt_test001| | 2012-7-13 15:12 | 只看该作者
可以不用main 前提是你得自己写编译器里面启动的.s文件
kangwuwei 发表于 2012-7-12 11:29

支持。一般那个启动的S文件里的最后一句是一个跳转。对于集成的开发环境,默认的是MAIN。你把它改成什么都可以。

使用特权

评论回复
31
sedatefire| | 2012-7-13 15:15 | 只看该作者
约定熟成的规矩罢了,无所谓main不main的
单片机执行顺序是这样的
上电-->跳到复位中断向量表--->跳转到初始化启动代码--->
在启动代码里面有类似这样一句话
jmp __main
或者
load  pc, __main
jmp
而.c档中的main函数经过编译器编译后,其词法表示就是__main
所以你可以把mian任意名字命名,只要你改了启动代码里面的对应部分即可

使用特权

评论回复
32
yongzai|  楼主 | 2012-7-16 00:27 | 只看该作者
谢谢各位的回答 不知5楼说的对不对 谢谢5楼

使用特权

评论回复
33
xxdcq| | 2012-7-17 09:10 | 只看该作者
6# ocon
汇编有无形的main(),不是表面的
呵呵!

使用特权

评论回复
34
dlyt_test001| | 2012-7-17 11:20 | 只看该作者
随便用GO TO,想到哪里就到哪里。

使用特权

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

本版积分规则