#include <iostream>
int main()
{
main();
std::cout<<"Hello World! "<<std::endl;
return 0;
}
これはコードです。どのように動作しますか? なんで?
それは未定義の動作です。C++ プログラム内から main() を呼び出すことはできません (標準のセクション 3.6.1.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 と呼ぶことができます。—終わりの例]
main()
エントリ ポイントは 1 つだけです。したがって、再度呼び出すことはできません。