XCode et les fonctions imbriqués

kilik2049

Membre confirmé
13 Juillet 2009
37
0
Nantes
Salut à tous, je suis en train de coder en C, et à chaque fois que je veux utiliser un algo de tri, Xcode m'affiche un message d'erreur comme quoi les fonctions imbriqués sont désactivées et que je dois utiliser une commande pour les réactiver. Sauf que je ne vois pas où et comment l'utiliser...
Si quelqu'un pouvait éclairer ma lanterne, ça serait sympa :)
Merci d'avance.
 
Une fonction imbriquée, c'est ça:

Bloc de code:
void fonction1(void)
{
	void fonction2(void)
	{
		print("toto");	
	}		
}

Effectivement, ce n'est pas accepté par défaut, donc il faudrait dire au compilateur d'autoriser leur utilisation en lui passant le flag (sur la ligne de commande, ou avec XCode, dans les options de l'exécutable, dans l'onglet Arguments).

Ceci dit… le compilateur gcc sort souvent des messages d'erreur complètement à côté de la plaque. Il est beaucoup plus probable que tu aies oublié un point-virgule quelque part.
 
Nan, je suis sur du code, c'est bien deux void imbriqués. J'ai XCode en anglais, les options de l'executables, c'est les options de run? Parce que je ne vois pas d'option pour run.
Sinon, si c'est les préférences d'XCode, quels onglets est-ce après?
Merci de votre aide :)
 
Dans ton projet : Targets/<ta cible>/Get Info/Build, je suppose que c'est dans la rubrique "GCC 4.2 - Language" mais je n'ai rien vu qui y ressemble. Dans ce cas, "man gcc" dans le terminal pour trouver le bon flag et le mettre dans la ligne "Other C flags" ou "Other C++ flags".
 
Tu as trouvé le flag qui va bien ?

Si tu veux persévérer dans cette façon de faire, tu peux essayer de te faire un template de projet avec ce paramètre, mais il faut quand même considérer que ce n'est pas dans les habitudes des développeurs d'utiliser les fonctions imbriquées. Donc essaie plutôt de t'en passer. :rateau:
 
on utilise pas de nested en C, c'est plus admis depuis 10 ans, c'est unsafe crade et merdique

nested function are a horrible gcc misfeature. So far people had enough taste to not introduce them without explicitly forbidding it