2
#include <iostream>

int main()
{
    main();
    std::cout<<"Hello World! "<<std::endl;
    return 0;
}

これはコードです。どのように動作しますか? なんで?

4

5 に答える 5

8

それは未定義の動作です。C++ プログラム内から main() を呼び出すことはできません (標準のセクション 3.6.1.3)。

したがって、何でも起こり得ます。そして、理由を尋ねても意味がありません。

于 2013-08-27T08:50:09.747 に答える
3

main 内で main を呼び出さないでください。未定義の動作です。

§ 5.2.2.9 関数呼び出し

main (3.6.1) という名前の関数を除いて、再帰呼び出しが許可されます。

§ 3.6.1

関数 main は、プログラム内で使用してはなりません。main のリンケージ (3.5) は実装定義です。main を削除済みとして定義するプログラム、または main を inline、static、または constexpr であると宣言するプログラムは整形されていません。名前 main は予約されていません。[例: メンバー関数、クラス、および列挙型は、他の名前空間のエンティティと同様に、main と呼ぶことができます。—終わりの例]

于 2013-08-27T08:50:39.093 に答える
0

main()エントリ ポイントは 1 つだけです。したがって、再度呼び出すことはできません。

于 2013-08-27T08:51:16.083 に答える