OVH Cloud OVH Cloud

Sous-fonctions en C et C++

3 réponses
Avatar
Matthieu Moy
Bonjour,

Je viens d'apprendre qu'il était possible de faire des sous-fonctions
en C :-)

Le code suivant compile en C avec GCC en tous cas :

#include <stdio.h>

void f() {
int a = 2;
int szf(int x) {
printf("sf%d %d\n",a,x);
}
szf(3);
}

int main() {
f();
return(0);
}


Mais ce qui me surprends, c'est que le même code ne compile pas en
C++.

Deux questions :

Est-ce que la version C est standard, ou bien est-ce une extension de
GCC ?

Est-ce que ça a été supprimé pour le C++ ?

Merci,

--
Matthieu

3 réponses

Avatar
Jean-Marc Bourguet
Matthieu Moy writes:

Est-ce que la version C est standard, ou bien est-ce une extension de
GCC ?


Extension de gcc.

Est-ce que ça a été supprimé pour le C++ ?


Je suppose. A moins qu'il y ait un flag qqch pour l'autoriser.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
magesh
Jean-Marc Bourguet wrote:
Matthieu Moy writes:


Est-ce que la version C est standard, ou bien est-ce une extension de
GCC ?



Extension de gcc.


Est-ce que ça a été supprimé pour le C++ ?



Je suppose. A moins qu'il y ait un flag qqch pour l'autoriser.
Probablement pour le flag je ne sais pas, mais quel interet en C++,

puisque le meme resultat peut etre obtenue d'une facon elegante en
utilisant les namespaces !!
magesh

A+




Avatar
Fabien LE LEZ
On Wed, 18 Feb 2004 20:29:12 +0100, magesh
wrote:

Probablement pour le flag je ne sais pas, mais quel interet en C++,
puisque le meme resultat peut etre obtenue d'une facon elegante en
utilisant les namespaces !!


Ce n'est pas la même chose : avec des fonctions imbriquées tu peux
avoir des variables locales (non statiques).
Plus d'infos ici : <http://www.gotw.ca/gotw/058.htm>

--
;-)