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 ?
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!