注册 登录
编程论坛 C语言论坛

新手请教一个main常识问题

C初见 发布于 2017-01-21 12:41, 1113 次点击
开始看谭浩强的时候定义是int main(),在学习过程中百度了下别人 的代码又是void main(),看郝斌视频又是int main(void),到底是哪一种的更规范?
5 回复
#2
renkejun19422017-01-21 13:14
int main(void)

void main() 最好不要使用,实际上有些编译器是不允许你这样写的。



[此贴子已经被作者于2017-1-21 13:23编辑过]

#3
renkejun19422017-01-21 13:23

Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main() { /* ... */ } is not and never has been C++, nor has it even been C.(意为 void main() 从来就不存在于 C++ 或者 C )。
所以void main( )本身就是错误的。。。

如果看过 The C programming Language 2e 这相书话,里面的例子写的都是main() ,这是C89标准中的,N年前的东西了。。。

C99标准中,定义的是int main(void),这里的void说明main()是不接收参数的,这是标准的,不要让他空着,main 函数的返回值类型必须是 int ,为什么有的会通过呢?这是编绎器给你自动加上去的,最后的return 0;也是,不要省略返回。VC6不会在目标文件中自动加入return 0; ,大概是因为 vc6 是 98 年的产品,所以才不支持这个特性。不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入 return 0;

因此并非所有的编绎器都支持void main (),标准中从来没有定义过void main (),虽然有些编绎器会支持,但请记住int并不是缺省返回值类型。。。C++中也是一样的道理。

最后说点,VC++6.0并不支持C99标准,gcc等支持了大部分,目前好像还没有哪一款编绎器完全支持C99标准的,Dev-C++一样也不是完全支持的.

原文链接(转载请保留此行):http://hi.baidu.com/dream0xdl/blog/item/d5dad7ce6358f80192457ea9.html
#4
C初见2017-01-21 13:33
回复 3楼 renkejun1942
谢谢回答很详细
#5
qdcs2017-01-21 14:33
不必纠结,我用 keil,pelles,c程序设计学习与实验系统2013等编译系统都支持这种写法。只不过是要体现main是函数的的属性,其实它不会被调用,有没有返回都没用。
#6
心中的淡蓝色2017-01-22 12:29
我有的时候都直接用的main耶
1