Projet c++ sous Xcode

parallel

Membre enregistré
4 Janvier 2005
6
0
41
Bonjour,

J'ai trouvé un projet c++/SDL intéressant sur le net sur lequel je voudrais travailler. Avec une compilation en ligne de commande, pas de pb, mais le debug en ligne de commande est assez obscur pour moi :o, et comme je suis encore un débutant en programmation je préfère le debug en interface graphique comme seul Xcode sait le faire ;)

J'ai donc essayé d'importer ce projet dans une template d'application de Xcode (la SDL application créée à l'installation de SDL), modifié les chemins de frameworks et de headers pour tenir compte des nouvelles inclusions, et lancé une première compilation. Résultat, ça coince, et au vu des messages je crois que c'est dû au fait que Xcode utilise encore le compilateur C sur des fichiers C++. Typiquement:
Bloc de code:
 struct struct1 {[indent] enum {a, b, c};
 enum {d, e, f};
 struct structInterne {[indent] int champ1;
 structInterne() {};
  [/indent]}
[/indent]}
lève des warnings un peu partout, et refuse d'accepter le constructeur structInterne() {}; en prétendant que la structure structInterne se termine juste avant cette déclaration, alors que, je le répète, la compilation en ligne de commande avec c++ ne pose aucun problème.

S'il le faut je peux toujours modifier en dur les fichiers pour supprimer ces messages d'erreurs, mais j'en ai moyennement envie sachant qu'ils ne présentent normalement aucune erreur grave.

J'ai essayé d'aller voir dans les options de compilation mais pas moyen de trouver où changer le compilateur, et en jouant sur les propriétés des fichiers (sourcecode.c.h -> sourcecode.cpp.h) rien ne change.

Quelqu'un a-t'il déjà été confronté au problème et si oui comment le résoudre ?

Merci d'avance
 
parallel a dit:
Bonjour,


Bloc de code:
 struct struct1 {[indent] enum {a, b, c};
 enum {d, e, f};
 struct structInterne {[indent] int champ1;
 structInterne() {};
  [/indent]}
[/indent]}

Rien à voir mais si tu veux t'y retrouver indente comme ca plutot :

Bloc de code:
 struct struct1
 {[indent]
 enum {a, b, c};
 enum {d, e, f};
 struct structInterne
        {[indent]
 int champ1;
 structInterne() {};
         [/indent]}
[/indent]}

c'est plus propre et quand c'est plus long, c'est dur de t'y repérer si c'est pas impec , :up: :up: :up:

JEanlOu
 
je me suis un peu planté dans ce que je viens de poster, mais tu vois ce que je veux dire, quand tu fermes ou ouvre une accolade, fais le sur une ligne ou il n'y aura que l'accolade et rien qu'elle. Ensuite quand tu la fermes, veille a ce qu'elle soit bien alignés par rapport a celle a laquelle elle correspond.

Donc en fait pas du tout comme j'ai fait ;)

J'espere avoir été clair

JEanlOu
 
Je suis d'accord avec toi Jean-Lou. Cependant, cela ne peut être (a mon avis) sans relation aucune avec le probleme initial. Le C (ou C++) traite les espaces, tab, et retour chariot de la meme facon.
Sauf, peut etre si les retour chariot sont Unix (10) et pas Mac (13).

Cordialement
 
Didier Guillion a dit:
Je suis d'accord avec toi Jean-Lou. Cependant, cela ne peut être (a mon avis) sans relation aucune avec le probleme initial. Le C (ou C++) traite les espaces, tab, et retour chariot de la meme facon.
Sauf, peut etre si les retour chariot sont Unix (10) et pas Mac (13).

Cordialement

haha, c'est tout à fait vrai, c'est bien pour ca que je précisais : "rien à voir mais .... " :D

Mais ca lui évitera plein de problème par la suite, ça j'en met ma main au feu

C'est vrai que pour l'instant il reste avec son pb sur les bras
:( :(

Bonne Chance

JEanlOu
 
Rebonjour,

Tout d'abord merci pour les suggestions. Pour les accolades, c'est un vieux réflexe de Eclipse, et le code proposé par la template SDL faisait pareil, donc j'ai pas cherché plus loin, mais je note la remarque quand même.

Pour le problème en lui-même, j'ai un peu honte parce que la solution est toute conne: un man gcc dans le terminal nous indique l'option -x language, et donc dans mon cas il suffisait de rajouter
Bloc de code:
-x c++
comme option de gcc.

Par contre j'ai essayé de passer de gcc4.0 à gcc3.3 et il a planté en me sortant plus de 10000 erreurs, m'obligeant à le tuer et le relancer. J'ai peut-être mal géré le changement, mais c'est quand même bizarre.

Merci encore