main() 函数在 C++ 中调用自身,会发生什么


#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()只有一个入口点。因此,不允许再次调用它。

相关内容

  • 没有找到相关文章