Ce ne serait pasd plus simple de caster systématiquement en long long ? printf("%Ldn", (long long)l_un_ou_l_autre);
Serge Paccalin
Le samedi 28 juin 2003 à 09:09:54, rixed a écrit dans fr.comp.lang.c :
Ce ne serait pasd plus simple de caster systématiquement en long long ? printf("%Ldn", (long long)l_un_ou_l_autre);
Caster, non. Il faut que les variables contiennent ces valeurs 64 bits. Ce n'est pas en les castant après coup qu'on affichera les bits qu'on n'a pas stockés...
Les déclarer en long long, peut-être, si tous les compilateurs concernés le connaissent.
-- ___________ 2003-06-29 09:34:42 _/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net _L_) Il faut donc que les hommes commencent -'(__) par n'être pas fanatiques pour mériter _/___(_) la tolérance. -- Voltaire, 1763
Le samedi 28 juin 2003 à 09:09:54, rixed a écrit dans fr.comp.lang.c :
Ce ne serait pasd plus simple de caster systématiquement en long long ?
printf("%Ldn", (long long)l_un_ou_l_autre);
Caster, non. Il faut que les variables contiennent ces valeurs 64 bits.
Ce n'est pas en les castant après coup qu'on affichera les bits qu'on
n'a pas stockés...
Les déclarer en long long, peut-être, si tous les compilateurs concernés
le connaissent.
--
___________ 2003-06-29 09:34:42
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
Le samedi 28 juin 2003 à 09:09:54, rixed a écrit dans fr.comp.lang.c :
Ce ne serait pasd plus simple de caster systématiquement en long long ? printf("%Ldn", (long long)l_un_ou_l_autre);
Caster, non. Il faut que les variables contiennent ces valeurs 64 bits. Ce n'est pas en les castant après coup qu'on affichera les bits qu'on n'a pas stockés...
Les déclarer en long long, peut-être, si tous les compilateurs concernés le connaissent.
-- ___________ 2003-06-29 09:34:42 _/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net _L_) Il faut donc que les hommes commencent -'(__) par n'être pas fanatiques pour mériter _/___(_) la tolérance. -- Voltaire, 1763
Philippe LANGEVIN
Le lundi 23 juin 2003 à 11:37, Philippe LANGEVIN a écrit dans fr.comp.lang.c :
Dans un programme en langage c destiner a etre compile sur des architectures differentes, j'utilise des entiers de 64 bits.
sous alpha : le type long suffit sous linux : j'utilise long long.
Pour les affichages : il faut donc utiliser deux formats differents %l et %Ld.
Quelles est la meilleure facon de gerer une source commune aux deux architectures ?
#define/#ifdef, je pense.
#if defined(__linux__) /* à déterminer... */
typedef long long INT64; #define FMT_I64 "Ld"
#elif defined(__alpha__) /* à déterminer... */
typedef long INT64; #define FMT_I64 "ld"
#else
#error entiers 64 bits non supportés
#endif
...
INT64 n = 123456789; n *= 987654321;
printf("n vaut %10" FMT_I64 "n",n);
J'ai mis __linux__ et __alpha__ au pif. Il faut que tu regardes quelles macros sont définies par tes compilateurs spécifiquement à tes environnements.
Ok, c'est je ne connaissais pas cette possibilite de concatenation au niveau des chaines de caracteres, la syntaxe reste assez legere.
Juste un petit point encore... comment faire la liste des macros definies par le compilateur ?
Le lundi 23 juin 2003 à 11:37, Philippe LANGEVIN a écrit dans
fr.comp.lang.c :
Dans un programme en langage c destiner a etre compile
sur des architectures differentes, j'utilise des entiers de 64 bits.
sous alpha : le type long suffit
sous linux : j'utilise long long.
Pour les affichages : il faut donc utiliser deux formats
differents %l et %Ld.
Quelles est la meilleure facon de gerer une source
commune aux deux architectures ?
#define/#ifdef, je pense.
#if defined(__linux__) /* à déterminer... */
typedef long long INT64;
#define FMT_I64 "Ld"
#elif defined(__alpha__) /* à déterminer... */
typedef long INT64;
#define FMT_I64 "ld"
#else
#error entiers 64 bits non supportés
#endif
...
INT64 n = 123456789;
n *= 987654321;
printf("n vaut %10" FMT_I64 "n",n);
J'ai mis __linux__ et __alpha__ au pif. Il faut que tu regardes quelles
macros sont définies par tes compilateurs spécifiquement à tes
environnements.
Ok, c'est je ne connaissais pas cette possibilite de concatenation
au niveau des chaines de caracteres, la syntaxe reste assez legere.
Juste un petit point encore...
comment faire la liste des macros definies par le compilateur ?