ホームページ >バックエンド開発 >C++ >C 関数はネストできますか?

C 関数はネストできますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-28 07:54:14509ブラウズ

Can C   Functions Be Nested?

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 では、関数内で関数を直接定義することはサポートされていません。ただし、次の手法を使用できます。

  1. 外部関数内で ローカル クラス を定義します。
  2. 内部で 静的関数 を宣言します。 local class.
int main() {
    struct X {
        static void a() {}
    };
    X::a();
}

これにより関数内に関数を作成できますが、これは回避策とみなされ、コードの理解が曖昧になる可能性があるため、使用は控えめにする必要があります。

以上がC 関数はネストできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。