C の Main() への再帰の合法性を探る
プログラマーの間で繰り返される議論は、C の main() への再帰の合法性です。 C.一部の情報源はこれが禁止されていることを示唆していますが、他の情報源はそのようなコードを受け入れるコンパイラの一見矛盾した動作を示しています。
C 標準の観点
3.6 の C 標準による。 1/3、main() への再帰は明示的に禁止されています。「関数 main は、 "
標準のコンテキストにおける "used" を理解する
標準では、"used" を次のように定義しています。その名前は、潜在的に評価される式に表示されます。"
コード例の場合present:
int main() { main(); }
main() への呼び出しは、潜在的に評価される式である main() の本体内に表示されます。したがって、標準の定義により、main() はプログラム内で使用され、違法となります。
コンパイラの動作と潜在的な例外
標準の禁止にもかかわらず、コンパイラは次のようになります。 g はそのようなコードをエラーなしでコンパイルできます。この動作は通常推奨されず、依存すべきではありません。コンパイラは、このような状況を非標準または実装固有の方法で処理する場合があります。
Main() への再帰の回避
C 標準への準拠を確保し、潜在的な問題を回避するためmain() への再帰を避けることを強くお勧めします。代わりに、言語のルールに違反することなく目的の機能を実現するために、代替のデザイン パターンまたはプログラミング手法を使用することを検討してください。
以上がMain() への再帰は C で法的に許可されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。