App*_*ker 17 c++ standards program-entry-point entry-point
为什么void
总是不鼓励在C++中设置入口点的返回类型,后来被标准删除并被现代编译器禁止?为什么它被认为是不好的做法?
现在,据我所知,C#和Java都允许入口点的返回类型为void
ie
static void main(String[] args) /* Java */
static void Main(string[] args) /* C# */
Run Code Online (Sandbox Code Playgroud)
C#和Java程序员并不认为这是不好的做法,事实上他们经常使用它.
这是其他语言(只打算是,我怀疑C++会成功在这十年中,至少)C的可能接班人++像d编程语言或瓦拉也允许void main()
.正如您所看到的,我怀疑C++社区是否将其从标准中删除,因为它过于模糊或不受欢迎.
所以我的问题是,为什么C++社区删除了void main()
?这有什么问题?
Kei*_*son 10
C++ 从未允许过void main()
,但有些编译器可能会允许它作为扩展,或者只是因为它们没有对它进行诊断.
同样,C void main()
除了作为延期外,从未允许过; 引入void
关键字的1989年标准定义了两个标准定义main
:int main(void)
和int main(int argc, char *argv[])
.
其他语言允许它,因为它们是其他语言.
能够写作void main()
而不是写作没有特别的优势int main()
.您甚至不需要显式返回值; 从结尾处掉落main
相当于return 0;
(在C++中,在C中以C99开头).
Gre*_*ill 10
C++标准委员会可能选择要求,int main()
因为大量现有代码期望使用return
语句将特定退出代码返回到运行时系统.期望所有现有代码改为使用是不合理的exit()
,因此int main()
在标准中提出了要求.
Java这样的语言在设计时,没有任何需要保持兼容的现有代码体.因此,设计者可以选择void main()
并要求使用System.exit()
非零退出代码.
因此,选择void main()
C++标准会"错误"的是它会破坏预期使用的现有代码return
和退出代码值main()
.
归档时间: |
|
查看次数: |
7766 次 |
最近记录: |