Directive de precompilation dans le header
Bonjour à tous,
Un petit post pour une question qui me parait bête mais je n'arrive pas à trouver de solution. J'aimerai, pour des soucis de compatibilité, définir une structure de deux façons différentes dans un .h, une quand je compile sous UNIX, une pour Linux.
Dans mon makefile généralement, j'utilise alternativement l'option -DCPU=UNIX et -DCPU=Linux suivant ma plateforme. Dans mes .c, je n'ai aucun problème mais là, dans un .h, cette façon de faire n'a pas l'air de marcher. Voici la solution que j'avais mise en place (et qui ne marche pas) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #if (CPU == Linux)
typedef struct
{
toto_UNSIGNED label:8; /* 0-7 */
toto_UNSIGNED sdi:2; /* 9-10 */
toto_UNSIGNED data:19; /* 11-27 */
toto_UNSIGNED ssm:2; /* 29-30 */
toto_UNSIGNED parity:1; /* 31-31 */
} SWord;
#else
typedef struct
{
toto_UNSIGNED parity:1; /* 31-31 */
toto_UNSIGNED ssm:2; /* 29-30 */
toto_UNSIGNED data:19; /* 11-27 */
toto_UNSIGNED sdi:2; /* 9-10 */
toto_UNSIGNED label:8; /* 0-7 */
} SWord;
#endif |
J'ai beau fouiller les tutos d'aide sur les directives de précompilation, je n'avance pas ... donc si j'ai raté un truc, je suis preneur !
PS : si possible je préfère éviter d'avoir à définir une variable d'environnement spécifique sur une seule des plateformes et faire un #if defined TITI mais si c'est la seule solution, je ferais avec.