Bonjour à tous,

Voici mon problème,
J'ai un projet avec de nombreux fichiers .c et .h
pour faciliter la visibilité je définis toutes toutes mes constantes précompilo dans un seul fichier .h
Celles-ci sont ensuite réutilisées dans d'autres fichier .h

exemple dans mon fichier definitions.h
je défini:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
#ifndef DEFINITIONS_H_
#define DEFINITIONS_H_
 
#define TAILLE_MAX 1000
 
#endif
ensutie dans mon fichier toto.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
#ifndef TOTO_H_
#define TOTO_H_
 
typedef struct
{
  int      numero;
  double   flotant;
  char     nom_du_truc[TAILLE_MAX];
} PROPERTY_DEF;
 
#endif
sous VS 2008, pas de porbs, ça passe.

Par contre avec gcc, j'obtiens l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
toto.h|8|error: `TAILLE_MAX' undeclared here (not in a function)
je précise que definitions.h n'est inclu que dans main.h lui même inclu dans main.c
qu'il n'y a jamais de #UNDEF TAILLE_MAX dans mon code

d'après mes maigres connaissances, à partir du moment ou un #define est défini une fois, il a une portée sur tout le code.

J'ai tenté de mettre une priorité de compil pour compiler le main.c en premier (afin d'être sûr que TAILLE_MAX soit défini avant d'être utilisé par le préprocesseur), mais rien n'y fait.

J'ai loupé quelque chose? je dois spécifier un argument spécial à GCC?