Peut-on avoir une fonction imbriquée en C ? Quelle est l'utilité des fonctions imbriquées ? Si elles existent en C, leur implémentation diffère-t-elle d'un compilateur à l'autre ?
Quelle importance s'ils font partie de Gnu C ?
Peut-on avoir une fonction imbriquée en C ? Quelle est l'utilité des fonctions imbriquées ? Si elles existent en C, leur implémentation diffère-t-elle d'un compilateur à l'autre ?
Vous ne pouvez pas définir une fonction dans une autre fonction en C standard.
Vous pouvez déclarer une fonction à l'intérieur d'une fonction, mais ce n'est pas une fonction imbriquée.
gcc a une extension du langage qui permet les fonctions imbriquées . Ils ne sont pas standard, et en tant que tels, ils dépendent entièrement du compilateur.
Non, ils n'existent pas en C.
Ils sont utilisés dans des langages comme le Pascal pour (au moins) deux raisons :
Les fonctions imbriquées ne font pas partie de ANSI C Cependant, ils font partie de Gnu C .
@Sachin Aide à comprendre pourquoi le code C avec des fonctions imbriquées peut être compilé avec gcc. L'information a une valeur éducative. De plus, la question ne précise pas si elle est limitée uniquement au C89, C99 ou GNU C.
D'autres langages supportés par GCC les ont (ADA et Pascal à ma connaissance), il est donc probable que soit il était facile de les ajouter à l'implémentation du C, soit ils ont été ajoutés au C afin de se préparer à supporter des langages qui en ont besoin.
Non, vous ne pouvez pas avoir une fonction imbriquée dans C
. Le plus proche que vous puissiez faire est de déclarer une fonction à l'intérieur de la définition d'une autre fonction. La définition de cette fonction doit cependant apparaître en dehors de tout autre corps de fonction.
Par exemple
void f(void)
{
// Declare a function called g
void g(void);
// Call g
g();
}
// Definition of g
void g(void)
{
}
La déclaration a la même portée que toute autre déclaration, donc dans ce cas jusqu'à la fin de la fonction. Bien sûr, une fois que la définition de g
est visible plus tard dans le fichier, cette déclaration est dans la portée du reste de l'unité de traduction. En outre, vous puede appeler des fonctions en C sans déclaration visible dans la portée, même si ce n'est pas conseillé.
Comme d'autres l'ont répondu, le C standard ne supporte pas les fonctions imbriquées.
Les fonctions imbriquées sont utilisées dans certains langages pour enfermer plusieurs fonctions et variables dans un conteneur (la fonction externe) de sorte que les fonctions individuelles (à l'exception de la fonction externe) et les variables ne sont pas visibles de l'extérieur.
En C Cela peut être fait en plaçant ces fonctions dans un fichier source séparé. Définissez la fonction principale en tant que globale et toutes les autres fonctions et variables en tant que statique . Maintenant, seule la fonction principale est visible en dehors de ce module.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Il semble que ce soit un doublon : stackoverflow.com/questions/1348095/
1 votes
Également stackoverflow.com/questions/666586/ y stackoverflow.com/questions/2256647/ y stackoverflow.com/questions/957592/ et d'autres tirés de stackoverflow.com/search?q=nested+functions+[c]