fonctions imbriquées

fonctions imbriquées - C - Programmation

Marsh Posté le 13-02-2009 à 17:25:36    

Je lis sur plusieurs sites internet que le c interdit les fonctions imbriquées.
Il se trouve que gcc les compile.
Existe-t-il un document officiel à ce sujet? merci d'avance

Reply

Marsh Posté le 13-02-2009 à 17:25:36   

Reply

Marsh Posté le 13-02-2009 à 17:47:22    

Les fonctions imbriquees sont une extension documentee de gcc (voir la doc de gcc: http://gcc.gnu.org/onlinedocs/gcc- [...] ons.html).

Reply

Marsh Posté le 13-02-2009 à 17:51:43    

Un Programmeur a écrit :

Les fonctions imbriquees sont une extension documentee de gcc (voir la doc de gcc: http://gcc.gnu.org/onlinedocs/gcc- [...] ons.html).


 
Ca veut donc dire qu'il n'y a que gcc pour compiler ça?

Reply

Marsh Posté le 13-02-2009 à 21:01:54    

Je me répond à moi même.
Aucune trace de spécifications concernant les fonctions imbriquées dans la doc du c99.
 
La doc d'un compilateur ibm rejoint ton document : "The language feature is an extension to C89 and C99, implemented to facilitate porting programs developed with GNU C."
 
ok ça roule. Et bien on fera autrement.
 

Reply

Marsh Posté le 13-02-2009 à 21:29:27    

ca sent quand meme le truc moche et inmaintenable :/

Reply

Marsh Posté le 13-02-2009 à 21:33:35    

Joel F a écrit :

ca sent quand meme le truc moche et inmaintenable :/


 
Les fonctions imbriquées?  Non.   En C++ on va en récupérer une partie de la fonctionnalité avec les lambda.

Reply

Marsh Posté le 13-02-2009 à 21:43:35    

ouais mais bon, une lambda fonction est une lambda fonction.
La ca sent le truc moche pr emuler les namespace anonymes mais anyway

Reply

Marsh Posté le 13-02-2009 à 21:51:34    

Le gros avantage des lambdas, c'est de ne pas être nommées, c'est sûr.  Mais pour que ce soit utile, il faut qu'elles capturent les variables locales -- ce que font les fonctions imbriquées.  En fait, tu donnes un nom à une lambda, et tu as une fonction imbriquée.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed