Que vaut sizeof(long) ?

Résolu
fregolo52 Messages postés 1115 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 - 20 févr. 2008 à 10:34
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 20 févr. 2008 à 16:22
Bonjour,

J'ai cherché sans succès. Je voudrais tester la taille d'un long à la compilation. Je n'ai pas trouver de variable de compilation qui aurait cette valeur.
Sachant que suivant les OS sizeof(long) vaut 4 ou 8, je voulais mettre un message d'erreur si sizeof(long) != 4.

Pour le moment je fais :
#if ULONG_MAX != 0xffffffffUL#error sizeof(long) !4> alignement  incompatible
#endif

Y a-t-il un autre moyen plus propre ?

Merci.

11 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 févr. 2008 à 11:33
Si tu es sure que le système ciblé est Windows (32bits ou 64bits) le problème ne se pose pas.
  => Windows 32 bits : sizeof(long) = sizeof(int) = 4 octets
  => Windows 64 bits : sizeof(long) = sizeof(int) = 4 octets (j'en suis quasi sure mais c'est à vérifier)
  => Linux : sizeof(long) = 8 octets

Seuls les système à base Unix propose du vrai 64bits de mémoire.

3