C++ main vs C main



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

在C++标准中:

它的返回类型应为int,但除此之外,它的类型是实现定义的。所有实施都应允许以下两个主要定义:

int main() { /* … */ }

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

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

如果返回类型与int不兼容,则返回到主机环境的终止状态为未指定

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

当你有";类型可以是实现定义的";您是否不允许C++编译器实现社区允许void作为一种类型?

C和C++都要求语言的任何实现都必须支持形式int main(void)int main(int, char**)。然而,标准还规定,实现可能支持其他形式,因此使用其他形式之一的程序不会自动无效,而是一个只有在某些平台上才支持的有效程序。

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

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

C++

它的返回类型应为int,否则其类型为实现定义。

这意味着返回类型必须为int,但main的参数可以实现定义。因此,main有实现特定参数的作用域,但没有int返回类型的变化范围。

C

C比main的允许返回类型更宽容。它确实允许int以外的返回类型。

相关内容

  • 没有找到相关文章