Maison > développement back-end > C++ > Les fonctions C peuvent-elles être imbriquées et comment cela a-t-il évolué selon les différentes normes ?

Les fonctions C peuvent-elles être imbriquées et comment cela a-t-il évolué selon les différentes normes ?

DDD
Libérer: 2024-12-20 08:27:10
original
511 Les gens l'ont consulté

Can C   Functions Be Nested, and How Has This Evolved Across Different Standards?

Fonctions imbriquées en C

Dans le contexte du C , la question se pose de savoir si les fonctions peuvent être définies au sein d'autres fonctions.

C moderne

En C 11 et versions ultérieures (C 14, C 17), les fonctions imbriquées sont possibles grâce à l'utilisation d'expressions lambda. Les lambdas peuvent être définis au sein de fonctions et se comporter comme des fonctions anonymes :

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

  for (int i = 0; i < 10; i++) {
    print_message("Hello!");
  }

  return 0;
}
Copier après la connexion

C 98 et C 03

En C 98 et C 03, les fonctions imbriquées ne sont pas directement soutenu. Cependant, un effet similaire peut être obtenu grâce à l'utilisation de classes locales avec des fonctions membres statiques :

int main() {
  struct X {
    static void a() {}
  };

  X::a();

  return 0;
}
Copier après la connexion

Bien que cette approche fournisse un semblant de fonctions imbriquées, elle n'est pas aussi simple que l'utilisation de lambdas en C moderne.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal