Maison >développement back-end >C++ >Les fonctions C peuvent-elles être imbriquées ?

Les fonctions C peuvent-elles être imbriquées ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 07:54:14492parcourir

Can C   Functions Be Nested?

Fonctions imbriquées en C

Question : Est-il possible de définir des fonctions au sein d'autres fonctions en C ?

Réponse :

C moderne (C 11 ou version ultérieure) :

Oui, vous pouvez créer des fonctions imbriquées en utilisant lambdas. Les Lambdas vous permettent de définir des fonctions anonymes qui peuvent capturer des variables locales dans leur portée.

int main() {
    auto print_message = [](std::string message) {
        std::cout << message << "\n";
    };
    print_message("Hello!");
}

C 98 et C 03 :

En C 98 et C 03, la définition directe de fonctions dans des fonctions n'est pas prise en charge. Cependant, vous pouvez utiliser la technique suivante :

  1. Définissez une classe locale au sein de la fonction externe.
  2. Déclarez des fonctions statiques au sein de la classe locale.
int main() {
    struct X {
        static void a() {}
    };
    X::a();
}

Bien que cela vous permette de créer des fonctions à l'intérieur de fonctions, il est considéré une solution de contournement et doit être utilisé avec parcimonie en raison de son potentiel d'obscurité dans la compréhension du code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn