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

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

Barbara Streisand
Libérer: 2024-12-28 07:54:14
original
488 Les gens l'ont consulté

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!");
}
Copier après la connexion

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();
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal