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:
ensutie dans mon fichier toto.h
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
sous VS 2008, pas de porbs, ça passe.
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
Par contre avec gcc, j'obtiens l'erreur:
je précise que definitions.h n'est inclu que dans main.h lui même inclu dans main.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 toto.h|8|error: `TAILLE_MAX' undeclared here (not in a function)
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?
Partager