可能重复:
主函数可以在 C++ 中调用自身吗?
我决定使用 CodeBlock IDE 做一个小测试,调用 main 函数,这应该是非法行为。
前任:
#include <iostream>
using namespace std;
int main()
{
cout<<"hello"<<endl;
main();
return 0;
}
奇怪的是,在代码块中,我能够编译这个烂摊子。有谁知道为什么?
输出:你好
可能重复:
主函数可以在 C++ 中调用自身吗?
我决定使用 CodeBlock IDE 做一个小测试,调用 main 函数,这应该是非法行为。
前任:
#include <iostream>
using namespace std;
int main()
{
cout<<"hello"<<endl;
main();
return 0;
}
奇怪的是,在代码块中,我能够编译这个烂摊子。有谁知道为什么?
输出:你好
正如您在问题本身中所说main()
,语言规范禁止从您的代码中显式调用。只有运行时可以调用它。
当您使用 GCC 编译代码(阅读您的评论)时,该-pedantic
选项将以错误或警告的形式为您提供适当的诊断。所以试试这个:
g++ program.cpp -pedantic
cout<<"hello"<<endl;
**main();**
return 0;
第二行 main() 将导致一个无限递归循环,其中 main() 函数一次又一次地调用自身,这反过来又会导致代码返回值中没有路径。
由于并非所有路径都返回值,因此没有 C 编译器会编译它。忘记 C,即使 C# 编译器在发现所有路径都没有返回值时也会停止,尽管代码是清晰的。
您可以调用main函数下的任何函数。main也是编译器在运行时触发的函数。是的,这是非法行为,但您可以在 main 下调用 main 函数。在主因隐性下调用 main 函数并无限运行时间。在 VS2008 中,您会收到调用 main 函数的警告,但程序运行没有任何问题。