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) :
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 !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Partager