【发布时间】:2012-03-15 13:47:05
【问题描述】:
为什么总是不鼓励在 C++ 中将入口点的返回类型设置为 void,后来又被标准删除并被现代编译器禁止?为什么它被认为是不好的做法?
现在,据我了解,C# 和 Java 都允许入口点的返回类型为 void 即
static void main(String[] args) /* Java */
static void Main(string[] args) /* C# */
C# 和 Java 程序员并不认为这是不好的做法,事实上他们经常使用它。
其他语言(仅打算成为,我怀疑 C++ 至少会在这十年内取得成功)C++ 的可能继任者,如 D 编程语言或 Vala 也允许 void main() .如您所见,我怀疑 C++ 社区将其从标准中删除,因为它太晦涩或不受欢迎。
所以我的问题是,为什么 C++ 社区删除了void main()?有什么问题?
【问题讨论】:
-
不同的语言设计者做出不同的决定。为什么重要?
-
@GregHewgill 我明白这一点。但促使 C++ 设计者做出决定的因素和原因是什么?
-
实际上,这个问题是错误的:假设一个程序的结果至少表明成功或失败是一件好事,并且被用于创建 C 的上下文中(UNIX 工具经常使用这个指示) 问题应该是:为什么 Java 和 C# 社区取消了指示(和强制)指示程序成功的能力?这实际上隐含地回答了
void main()的问题:程序没有结果。此外,void main()没有删除:它从未添加。 -
我会说使用异常是首选方式。如果程序抛出指示“经典”错误状态的异常,则内置错误处理程序应为您返回“经典”返回码等效值。手动操作是非常多余的。不过,您仍然可以在 Java 中使用像 exit(retcode) 这样的函数。您可以创建自己的顶级 catch 块来返回代码并使用 exit(...)。
标签: c++ standards main entry-point