C语言主函数写法差异

[复制链接]
5101|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)
 楼主| SYHDJF 发表于 2011-9-7 23:14 | 显示全部楼层
受教了,只是标准具体是什么呢?能否告知

评论

你所用的编译器所规定的作为标准。而不是上面C89 C99。  发表于 2013-1-23 21:48
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[]) { /*...*/ }
arminux 发表于 2011-9-8 00:16 | 显示全部楼层
本帖最后由 arminux 于 2011-9-8 00:17 编辑

这个返回值在有的时候是很有用的,当由外部程序(通常是shell)调用时可将该值传回,一般来说0表示没有错误,其他值是错误代码或自定,这样外部程序可知道程序执行结果。
不过一般在单片机中没有被外部调用只要返回0就好
lu18887 发表于 2011-9-8 00:16 | 显示全部楼层
返回INT是可以传递一些信息的,比如一些命令行程序,没有界面,运行出错之后可以返回一些特殊值,这样就知道你调的这个程序运行出错了没,不过这个在PC里才能用吧,在单片机里不知道如何

评论

很受教!  发表于 2013-1-24 12:37
 楼主| SYHDJF 发表于 2011-9-8 07:16 | 显示全部楼层
看来还真是有些学问的啊,多谢大家的热心回帖。努力学习
ayb_ice 发表于 2011-9-8 08:42 | 显示全部楼层
C标准版本差异
rclong 发表于 2011-9-8 22:32 | 显示全部楼层
int main()是严格的C99标准写的
void main()是微软的标准 不规范

看谭浩强以前的书一般就是第二种写法
不过他在新版的书里似乎也改成了第一种
79424066 发表于 2011-9-8 23:11 | 显示全部楼层
其实这个也与特定单片机有关,在C51里,一般无返回值,而在AVR里,有这个习惯,应该是吧!
jhzh951753 发表于 2011-9-9 09:40 | 显示全部楼层
额 !!观摩 学到不少东西。。
Ryanhsiung 发表于 2011-9-9 10:37 | 显示全部楼层
单片机无所为了,返回值在单片机里还用不到,一直都 是死循环根本就出来来,也不让出来
  这个是在PC软件才有用到
hxf800714 发表于 2011-9-9 10:48 | 显示全部楼层
[quote][/quote]
Alan.Z 发表于 2013-1-23 21:16 | 显示全部楼层
有收获哦!谢谢各位大虾!
渤海三叠浪 发表于 2013-1-23 21:42 | 显示全部楼层
51keil中规范的做法。
void main(void)
其他的不规范,当然凑着着可能也能用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

199

帖子

1

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