問題:
次のコードはエラーなしでコンパイルされますが、無限に入ります。ループ:
int main() { return main(); }
答え:
C で main 関数をその内部から呼び出すと、未定義の動作が発生します。未定義の動作とは、次のようなあらゆることが起こる可能性があることを意味します。
C 標準では、main 関数の名前を式で指定してはならないと明示的に規定されています。 main が自身を呼び出すとき、コンパイラはコードをコンパイルするのではなく、診断メッセージを発行する必要があります。
この標準要件にもかかわらず、一部のコンパイラは診断メッセージを発行せず、プログラムのコンパイルを許可しない場合があります。ただし、このようなプログラムを実行すると、未定義の動作が呼び出されます。
コンパイラの動作:
コンパイラは、メインの実行を禁止するルールを含め、C 標準のすべてのルールを強制する必要はありません。自分自身を呼んでいます。警告やエラーが発行される場合がありますが、実際の動作はコンパイラやコンパイラ設定によって異なります。
影響:
C では main を再帰的に呼び出すことはできません。コンパイラーがそれを許可していても、プログラムは未定義の動作を示すため、依存すべきではありません。
以上がC で「main」関数は自分自身を再帰的に呼び出すことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。