Définir une structure pour tout un projet

Définir une structure pour tout un projet - C++ - Programmation

Marsh Posté le 14-06-2005 à 17:24:21    

Bonjour,
Je travaille sur projet (MFC) ayant plusieurs fichiers (bien évidemment) et plusieurs d'entre eux utilisent une structure de ce type :
 
typedef struct {
      int x;
      int y;
      } blabla;
 
 
En admettant qu'il y a deux fichiers f1 et f2 qui utilisent cette structure,
 je n'arrive pas a savoir ou je dois la déclarer, car je me retrouve tout le temps avec des erreurs du type already define in f1.obj qd je compile
 
Qq pourrait-il m'aider?
 
Je reste a votre disposition pour plus de précisions

Reply

Marsh Posté le 14-06-2005 à 17:24:21   

Reply

Marsh Posté le 14-06-2005 à 17:27:28    

dans un .h bien gardé comme il faut. fais une recherche sur le forum

Reply

Marsh Posté le 14-06-2005 à 17:44:37    

C ce que je viens de faire mais il me dit error C2371... 'blabla' : redefinition : different basic types...
Dois-je appeler d'autres header dans ce meme .h?

Reply

Marsh Posté le 14-06-2005 à 17:47:29    

Taz a écrit :

fais une recherche sur le forum


Reply

Marsh Posté le 14-06-2005 à 17:49:13    

En C++, c'est pas plutôt :
 
struct blabla {  
      int x;  
      int y;  
};

Reply

Marsh Posté le 14-06-2005 à 17:50:07    

Merci, c ce que je fais... (tu parles d'un bisounours...)

Reply

Marsh Posté le 14-06-2005 à 17:52:01    

ben tu t'y prends comme un pied, cette semaine meme y a eu encore un sujet là dessus

Reply

Marsh Posté le 14-06-2005 à 17:53:12    

_TomTom_ a écrit :

C ce que je viens de faire mais il me dit error C2371... 'blabla' : redefinition : different basic types...
Dois-je appeler d'autres header dans ce meme .h?


 
Il faut protéger tes en-têtes avec des pragmas, pour éviter qu'elles ne soient incluses plusieurs fois.
 
Le meilleur exemple se trouve dans les fichiers *.h standards, ils ont tous cette structure :
 

Code :
  1. #ifndef identifiant_unique
  2. #define identifiant_unique
  3. /* ici les definitions de l'en-tete */
  4. #endif


Message édité par Elmoricq le 14-06-2005 à 17:55:09
Reply

Marsh Posté le 14-06-2005 à 17:54:48    

Elmoricq a écrit :

Il faut protéger tes en-têtes avec des pragmas, pour éviter qu'elles ne soient incluses plusieurs fois.


les pragmas ne sont pas standards

Reply

Marsh Posté le 14-06-2005 à 17:54:52    

Merci a toi Elmoricq, je fonce faire le test

Reply

Marsh Posté le 14-06-2005 à 17:54:52   

Reply

Marsh Posté le 14-06-2005 à 17:56:23    

Taz a écrit :

les pragmas ne sont pas standards


 
Je ne dois pas utiliser le bon terme.
Un #ifndef c'est une directive de compilation, donc un pragma, ou bien je me plante dans le vocabulaire ?
 
EDIT : j'ai trouvé ma réponse avec un "define pragma" dans Google :

Citation :

A preprocessor directive that is not specified by the ISO standard. Pragmas often control actions of the compiler and linker. A pragma always begins with a number sign (#).


Donc le terme n'est effectivement pas du tout correct. Mes excuses.


Message édité par Elmoricq le 14-06-2005 à 17:59:29
Reply

Marsh Posté le 14-06-2005 à 18:00:25    

tu te plante de vocabulaire. il existe des pragma (#pragma) dont l'immense majorité son spécifique à un compilateur donné (à part 2/3 mais c'est bien tout), et après les directives classique #define/include/if/etc

Reply

Marsh Posté le 14-06-2005 à 18:02:29    

Encore merci Elmoricq

Reply

Sujets relatifs:

Leave a Replay

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