C の入れ子関数
質問: C の他の関数内で関数を定義することは可能ですか?
答え:
モダン C (C 11 以降):
はい、次を使用してネストされた関数を作成できます。 ラムダ。ラムダを使用すると、スコープ内のローカル変数をキャプチャできる匿名関数を定義できます。
int main() { auto print_message = [](std::string message) { std::cout << message << "\n"; }; print_message("Hello!"); }
C 98 および C 03:
C 98 および C 03 では、関数内で関数を直接定義することはサポートされていません。ただし、次の手法を使用できます。
int main() { struct X { static void a() {} }; X::a(); }
これにより関数内に関数を作成できますが、これは回避策とみなされ、コードの理解が曖昧になる可能性があるため、使用は控えめにする必要があります。
以上がC 関数はネストできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。