#include <iostream>
int main()
{
main();
std::cout<<"Hello World! "<<std::endl;
return 0;
}
这是代码,它的表现如何?为什么呢?
答案 0 :(得分:7)
这是未定义的行为。你不能在C ++程序中调用main()(标准的第3.6.1.3节)。
因此,任何事情都可能发生。问问为什么没有意义。
答案 1 :(得分:3)
main()函数在C ++中调用自身,会发生什么?
任何事情都可能发生,因为它是未定义的行为。但是由于程序目前正在进行,一些无限递归(最终是堆栈溢出)似乎是合理的。
答案 2 :(得分:3)
你不应该调用main inside main,它是未定义的行为。
§5.2.2.9函数调用
允许递归调用,但名为main(3.6.1)的函数除外。
§3.6.1
函数main不得在程序中使用。 main的链接(3.5)是实现定义的。将main定义为已删除或将main声明为inline,static或constexpr的程序不正确。名称main不以其他方式保留。 [示例:成员函数,类和枚举可以称为main,其他名称空间中的实体也可以称为main。 - 例子]
答案 3 :(得分:1)
在C ++中,不允许从您那里调用main()
。所以这是一个错误。即使取其地址也是错误的。
答案 4 :(得分:0)
main()
只有一个入口点。因此,不允许再次调用它。