gpt4 book ai didi

C++ 主 vs C 主

转载 作者:太空狗 更新时间:2023-10-29 23:24:12 30 4
gpt4 key购买 nike

我正在阅读一份关于 C++ 与 C 的文档。该文档说与 C 相比,C++ 编写得非常紧凑。一个例子是,C 允许 main() 函数类型为 void。另一方面,C++ 不允许这样做,他给出了标准中的以下声明。

在 C++ 标准中:

It shall have a return type of int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:

int main() { /* … */ }

and

int main(int argc, char* argv[]) { /* … */ }

C 标准说的一样,但有一个额外的声明。

If the return type is not compatible with int, the termination status returned to the host environment is unspecified

这表明允许不返回 int 的表单是有意的。

当您声明“类型可以由实现定义”时,您是否不允许 C++ 编译器实现社区有空间允许将 void 作为类型?

最佳答案

C 和 C++ 都要求该语言的任何实现都必须支持 int main(void)int main(int, char**) 形式。但是,标准还表示实现可能支持其他形式,因此使用其中一种其他形式的程序不会自动无效 - 相反,它是一个有效的程序,它只发生在某些平台上得到支持。

在这方面,C 和 C++ 之间的唯一区别是 哪些 main 的替代形式是允许的。在 C++ 中,所有形式都必须返回 int,因此只允许参数不同,此外,如果 any 形式的前两个参数是 int,char **,它们应该具有通常的含义。

C 更自由一些,因为它允许任何 main 的替代形式。因此,带有 void main(char, double) 的程序是一个有效的 C 程序,需要实现支持此签名,而它无条件地是格式错误的 C++。另一方面,int main(int, char**, char**) 是 C 和 C++ 的允许签名,也需要实现支持,C++ 期望前两个参数具有通常的意思。

关于C++ 主 vs C 主,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9554513/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com