4

main()の再帰がC ++で許可されていないところをいくつか読みましたが、試してみるとエラーなしで実行されました

#include<iostream>
using namespace std;

int i=10;

int main()
{
    if(i==1)
    {
        cout<<i;
        return 0;
    }
    i--;
    main();
}
4

2 に答える 2

11

明示的に呼び出すmainことは未定義の動作であり、何でも起こり得ます(動作しているように見えることを含む)。

C ++ 03 3.6.1

3)関数mainはプログラム内で使用してはならない。[...]

コンパイラー(すべての未定義の動作がそうであるように)は、診断を提供する必要はなく、クラッシュするためにランタイムも必要ありません。

于 2012-08-25T14:25:28.000 に答える
0

コードが無効です。診断を発行するには、適合するコンパイラが必要です。そうすることで、コンパイラは実行可能ファイルを生成することを含め、何でも自由に行うことができます。

g++ は診断を発行しないようですが、EDG コンパイラ (comeau online を介して) は発行することに注意してください。

于 2012-08-25T15:12:06.083 に答える