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