Why is the type of the main function in C and c++ left to the user to define?(为什么C和C++中main函数的类型留给用户定义?)
问题描述
为什么 main()
是用户定义的函数?
Why is main()
a user defined function ?
我什么时候使用 void main()
和 int main()
?
When will I use void main()
and int main()
?
推荐答案
EDIT 这个答案并不完整,因为它没有真正解决奇怪的句子或其他实现定义的方式".我现在写了一个更完整的答案它还解决了 C90、C11 和 C++.编辑结束
EDIT This answer is not as complete as it could be since it doesn't really address the strange sentence "or otherwise in some implementation-defined manner". I have now written a more complete answer which also addresses C90, C11 and C++. END OF EDIT
以下是 C 标准的说明(ISO C 9899:1999):
Here is what the C standard says (ISO C 9899:1999):
5.1.2.1 独立环境
5.1.2.1 Freestanding environment
在一个独立的环境中(在其中 C程序执行可能发生没有任何经营利益系统),名称和类型程序启动时调用的函数是实现定义./../效果程序终止在一个独立的环境是实现定义.
In a freestanding environment (in which C program execution may take place without any benefit of an operating system), the name and type of the function called at program startup are implementation-defined. / .. / The effect of program termination in a freestanding environment is implementation-defined.
5.1.2.2 托管环境
5.1.2.2 Hosted environment
不需要提供托管环境,但是应符合以下规格(如果有).
A hosted environment need not be provided, but shall conform to the following specifications if present.
5.1.2.2.1 程序启动
5.1.2.2.1 Program startup
程序启动时调用的函数名为主要的.实现声明没有这个函数的原型.它应用 int 返回类型定义并且没有参数:
The function called at program startup is named main. The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters:
int main(void) {/* ... *
本文标题为:为什么C和C++中main函数的类型留给用户定义?
基础教程推荐
- C++,'if' 表达式中的变量声明 2021-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 设计字符串本地化的最佳方法 2022-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01