打印

C语言主函数写法差异

[复制链接]
3976|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SYHDJF|  楼主 | 2011-9-7 20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在看郝斌老师的C语言教程,讲的很基础,基本上都能够理解。只是一直在纠结一个问题,就是main函数的写法。以前接触的都是这样写:
void main(void)
{}
教程里是这样写:
int main(void)
{
return 0;
}
明白前一个是无返回值的主函数,后一个是定义为了有返回值的主函数,只是返回的是0。
不知道这两种写法有没有什么更深的含义呢?哪一个写法更好呢?谢谢大家解惑。

相关帖子

沙发
原野之狼| | 2011-9-7 22:18 | 只看该作者
有些编译器会对第一种写法报错~

使用特权

评论回复
板凳
SYHDJF|  楼主 | 2011-9-7 23:02 | 只看该作者
自己接触的都是Keil编译的,看来还是接触的比较少。

使用特权

评论回复
地板
highgear| | 2011-9-7 23:07 | 只看该作者
使用的标准不同。
void main(void) 为 C89 以前的写法,
ISO/IEC C89 要求 int main(void)

使用特权

评论回复
5
SYHDJF|  楼主 | 2011-9-7 23:14 | 只看该作者
受教了,只是标准具体是什么呢?能否告知

使用特权

评论回复
评论
渤海三叠浪 2013-1-23 21:48 回复TA
你所用的编译器所规定的作为标准。而不是上面C89 C99。 
6
highgear| | 2011-9-7 23:27 | 只看该作者
ansi C(89) 的全文在此:
http://flash-gordon.me.uk/ansi.c.txt

main 有关的定义:
"Program startup"

   The function called at program startup is named main .  The
implementation declares no prototype for this function.  It can be
defined with no parameters:

         int main(void) { /*...*/ }

or with two parameters (referred to here as argc and argv , though any
names may be used, as they are local to the function in which they are
declared):

         int main(int argc, char *argv[]) { /*...*/ }

使用特权

评论回复
7
arminux| | 2011-9-8 00:16 | 只看该作者
本帖最后由 arminux 于 2011-9-8 00:17 编辑

这个返回值在有的时候是很有用的,当由外部程序(通常是shell)调用时可将该值传回,一般来说0表示没有错误,其他值是错误代码或自定,这样外部程序可知道程序执行结果。
不过一般在单片机中没有被外部调用只要返回0就好

使用特权

评论回复
8
lu18887| | 2011-9-8 00:16 | 只看该作者
返回INT是可以传递一些信息的,比如一些命令行程序,没有界面,运行出错之后可以返回一些特殊值,这样就知道你调的这个程序运行出错了没,不过这个在PC里才能用吧,在单片机里不知道如何

使用特权

评论回复
评论
wangkangming 2013-1-24 12:37 回复TA
很受教! 
9
SYHDJF|  楼主 | 2011-9-8 07:16 | 只看该作者
看来还真是有些学问的啊,多谢大家的热心回帖。努力学习

使用特权

评论回复
10
ayb_ice| | 2011-9-8 08:42 | 只看该作者
C标准版本差异

使用特权

评论回复
11
rclong| | 2011-9-8 22:32 | 只看该作者
int main()是严格的C99标准写的
void main()是微软的标准 不规范

看谭浩强以前的书一般就是第二种写法
不过他在新版的书里似乎也改成了第一种

使用特权

评论回复
12
79424066| | 2011-9-8 23:11 | 只看该作者
其实这个也与特定单片机有关,在C51里,一般无返回值,而在AVR里,有这个习惯,应该是吧!

使用特权

评论回复
13
jhzh951753| | 2011-9-9 09:40 | 只看该作者
额 !!观摩 学到不少东西。。

使用特权

评论回复
14
Ryanhsiung| | 2011-9-9 10:37 | 只看该作者
单片机无所为了,返回值在单片机里还用不到,一直都 是死循环根本就出来来,也不让出来
  这个是在PC软件才有用到

使用特权

评论回复
15
hxf800714| | 2011-9-9 10:48 | 只看该作者
[quote][/quote]

使用特权

评论回复
16
Alan.Z| | 2013-1-23 21:16 | 只看该作者
有收获哦!谢谢各位大虾!

使用特权

评论回复
17
渤海三叠浪| | 2013-1-23 21:42 | 只看该作者
51keil中规范的做法。
void main(void)
其他的不规范,当然凑着着可能也能用

使用特权

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

本版积分规则

0

主题

199

帖子

1

粉丝