C の入れ子関数
C のコンテキストでは、関数を他の関数内で定義できるかどうかという疑問が生じます。
モダン C
C 11 以降のバージョン (C 14、C 17) では、ラムダ式を使用して入れ子関数が可能です。ラムダは関数内で定義でき、匿名関数のように動作します。
int main() { auto print_message = [](std::string message) { std::cout << message << "\n"; }; for (int i = 0; i < 10; i++) { print_message("Hello!"); } return 0; }
C 98 および C 03
C 98 および C 03 では、入れ子関数は直接サポートされました。ただし、同様の効果は、静的メンバー関数を持つローカル クラスを使用することによって達成できます。
int main() { struct X { static void a() {} }; X::a(); return 0; }
このアプローチでは、ネストされた関数のような外観が得られますが、最新の C でラムダを使用するほど単純ではありません。
以上がC 関数は入れ子にすることができますか?これはさまざまな標準でどのように進化しましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。