某些C++编译器允许主函数具有返回类型void
。但是操作系统是否需要返回int
类型的值来指定程序是否结束?C++ void返回类型main()
回答
C++确实不是允许main
有一个void
返回类型。公布的C++标准要求它是int
。一些C++编译器允许您使用void
,但这不推荐。一般来说,操作系统并不关心其中一种方式。一个特定的操作系统可能需要一个程序来给出返回值,但它不一定必须来自main
的返回值。如果C++编译器允许void
,那么它可能提供了一些指定程序退出代码的其他方法。
C++标准不允许main()具有返回类型的void。尽管如此,大多数编译器都会让它通过。
main
返回void
被接受向后兼容,但它是不合法的。
在这种情况下,退出代码将为0.您仍然可以使用退出功能更改退出代码。
C++允许主要功能有返回类型为void
不,不。
C++标准只需要2种不同类型的主签名。如果返回类型为int
,可以选择添加其他人。
允许void返回类型的C++实现在C++标准方面是不正确的。
C++ 03标准S. 3.6.1-2:
一种实现不应预定义的主要功能。 该功能不得超载。它应该有一个返回类型为int的类型,否则它的类型是实现定义的。 所有的实现应允许主要是以下定义都 :
int main() { /* ... */ } int main(int argc, char* argv[]) {/* ... */ }
如果你想移植的C++代码,或写出好的C++的例子,那么你应该总是使用以上两个变化之一。
这就是为什么void main()不被标准C++允许 - 尽管一些编译器(例如gcc)确实允许它。
简而言之:总是使用int main(),永远不会void main()。
gcc允许它为C,但是禁止它用于C++,即使你告诉它它是-fpermissive。 – BatchyX 2010-09-06 16:15:24
在从主返回的void
合法(而非C++)的语言中,OS在正常(非例外)程序终止时通常会看到0
的返回值。
But doesn't OS require int type value returned to specify whether program
ended well or not?
为什么总是这样?在双击图标时,在窗口上,该过程在结束后死亡。操作系统不检查返回类型。即使在linux上,如果您只是将二进制文件作为./runBinary运行,它也会运行并退出。操作系统本身不显示消息失败或成功。
以上所有答案都是正确的,标准说它是int,但是一些编译器也允许void。
根据编译器的不同,您可能可以使用void main函数,但正确的方式(即真正标准的兼容编译器应该遵循的)是返回int,其中0表示很好的&干净出口,你的程序做错了什么。
- 1. c void main函数?返回16值
- 2. 在C和C++中返回void类型
- 3. 在void返回类型
- 4. 如何从void(C++)返回多个值为main(C++)
- 5. C++标准禁止void main()原型吗?
- 6. 将void *类型传递给main()函数
- 7. c/C++中main()的默认返回类型
- 8. 显示void类型的返回值
- 9. 测试返回类型的方法void
- 10. 返回类型void /方法的替代?
- 11. appendAttributedString类型的返回值void
- 12. Python的返回类型为void注释
- 13. Hello.c:函数'main':Hello.c:13:warning:'main'的返回类型不是'int'?
- 14. 不返回值,从函数具有非void返回类型
- 15. 分配给void delegate的lambdas放弃C#中的非void返回类型吗?
- 16. SWIG对void * C返回类型的支持
- 17. c#中static void main(string [] args)和static void main()之间的区别?
- 18. 返回类型为void的方法返回的是什么?
- 19. $ .grep返回类型为void是不能分配给boolean类型
- 20. 如何递归回溯返回处理void类型
- 21. 返回内部类中返回类型void的过度泛滥方法
- 22. c + +返回类型和类型名称
- 23. 从A类返回到B类,然后返回Main类的值?
- 24. 返回void的C++/C函数指针*
- 25. void方法返回void?
- 26. 返回类型Java和C#
- 27. C自动返回类型
- 28. c + +返回类型问题
- 29. C#复杂返回类型
- 30. 返回类型的C++ lambda
你从哪里学到的? C++要求'main'具有'int'的返回类型。 – 2010-09-06 14:25:44
这是第N次发布此链接,其中N是一个非常大的整数。 http://www2.research.att.com/~bs/bs_faq2.html#void-main但它永远不会帮助:-( – dirkgently 2010-09-06 14:33:28
@dirkgently:“但它永远不会帮助”...我希望它至少帮助N人:)。 – 2010-09-06 14:43:05