main()の再帰がC ++で許可されていないところをいくつか読みましたが、試してみるとエラーなしで実行されました
#include<iostream>
using namespace std;
int i=10;
int main()
{
if(i==1)
{
cout<<i;
return 0;
}
i--;
main();
}
明示的に呼び出すmain
ことは未定義の動作であり、何でも起こり得ます(動作しているように見えることを含む)。
3)関数mainはプログラム内で使用してはならない。[...]
コンパイラー(すべての未定義の動作がそうであるように)は、診断を提供する必要はなく、クラッシュするためにランタイムも必要ありません。
コードが無効です。診断を発行するには、適合するコンパイラが必要です。そうすることで、コンパイラは実行可能ファイルを生成することを含め、何でも自由に行うことができます。
g++ は診断を発行しないようですが、EDG コンパイラ (comeau online を介して) は発行することに注意してください。