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
DDDoriginal
2024-12-20 08:27:10432parcourir

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;
}

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;
}

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:
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