2009-11-24 6 views
0

Je travaille sur un projet C++ sur macOS X 10.6.2 avec xcode.Pbl xcode C++ typedef struct toto toto

J'ai essayé de compiler mon code sur Windows et je n'ai aucun problème, je suppose que Linux fonctionne mais je n'en ai pas un avec moi en ce moment.

Mon problème est Xcode ne pas accepter ce genre d'enseignement:

struct direction { 
double x; 
double y; 
double z; 
double t; }; 

typedef struct direction direction; 

Voici mon erreur:

/Users/sbarbier/dev/xcode/Infographie/TP9-RayTracing/RayTracing-Direction.h:22:0 /Users/sbarbier/dev/xcode/Infographie/TP9-RayTracing/RayTracing-Direction.h:22: error: changes meaning of 'direction' from 'typedef struct direction direction'

J'utilise GCC4.2 et je change rien. Ce code fonctionne sur toutes les plateformes, quelqu'un peut-il m'aider?

+0

J'ai juste essayé et on dirait que ça marche sur Linux –

Répondre

0

Ce n'est pas C. En C, utiliser un struct que vous deviez utiliser le mot-clé struct:

struct some_struct{ int i; }; 
struct some_struct myStruct; 

Cela a été allégé comme celui-ci, communément:

typedef struct { int i; } some_struct; 
some_struct myStruct; 

En C++ cette n'est pas requis. direction a déjà un type, alors vous essayez de créer un nouveau type du même nom, et c'est mauvais. Sortez tout votre typedef, ce n'est pas nécessaire.

0

En C++, struct et class sont utilisés uniquement lors de la déclaration ou de la définition de la structure ou de la classe. Vous pourriez vouloir le typedef en C, mais en C++ cela n'a aucun sens.