gcc, la largeur de long int sur différentes architectures
Sur des architectures 64 bits, long int
, selon gcc est au moins un int64_t
. Sur 32 bits, long int
est au moins int32_t
. Avec les compilateurs Microsoft, long
est toujours un int32_t
, indépendamment de 32/64-bit. Est-il possible de:
- Force de gcc pour traiter long comme un int64_t, sur 32 bits? (pour la facilité du test)
- Force de gcc pour traiter long comme un int32_t sur 64 bits? (pour la conformité avec MS du compilateur).
OriginalL'auteur please delete me | 2010-11-22
Vous devez vous connecter pour publier un commentaire.
Ne pas le faire - utiliser les types standard comme
int32_t
,uint32_t
,int64_t
,uint64_t
, etc à partir de<stdint.h>
plutôt que d'essayer de faire des hypothèses sur nu types commelong int
ou tenter de plier le compilateur à votre volonté.Remarque: La version 64 bits de modèle pour toute plate-forme (par exemple, LP64 pour la plupart des *nix plateformes, Mac OS X, etc) est une donnée, de sorte que même si vous pouviez convaincre le compilateur à utiliser un autre 64 bits modèle qui vous serait probablement briser tous les appels système de code, les bibliothèques, etc.
OriginalL'auteur Paul R
C'est pourquoi il est en général beaucoup plus facile d'utiliser un ensemble de typedefs qui sont définies par la plate-forme. Il va vraiment vous faire économiser beaucoup de tracas lors de la compilation sur le hasard-plate-forme-avec-au hasard-compilateur-47.4
si les membres de votre équipe sont l'écriture fragile/dangereux/code non portable, alors vous devez les corriger et/ou de leur code.
n'a pas toujours été dans la norme C. Il a été introduit en C99.
OriginalL'auteur Goz