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

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

Barbara Streisand
リリース: 2024-12-28 07:54:14
オリジナル
545 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート