sizeof(long) en C++64 bits

J'ai téléchargé MinGW-64, donc je peux maintenant compiler des programmes 64 bits pour Windows 7, l'utilisation de g++ 4.7.0 (expérimental). Mais la ligne suivante:

cout << sizeof(long) << " " << sizeof(void*) << endl ;

imprime 4 8, pas 8 8. La documentation de g++ 4.6.0 dit:

L'environnement 64 bits jeux de int de 32 bits et une longue et pointeur vers 64 bits

Quelqu'un sait pourquoi sizeof(long) n'est pas 8?

Modifiées afin d'ajouter: La source de ma confusion vient du fait que g++ 4.7.0 pour la version 64 bits de Windows n'est pas (encore) une partie officielle de la GNU compiler Collection. Et c'est le premier de 64 bits version à 32 bits long, de sorte que la documentation n'a tout simplement pas s'appliquer à elle. En effet, si vous allez à la page web, l'entrée pour IA-32/x86-64 consiste en ceci:

...

  • Ressemble à quelqu'un juste en série downvoted la moitié des réponses sans laisser de commentaires...
  • Et ma question trop!
  • Si vous avez besoin d'une version 64 bits de large integer utiliser le int64_t/un uint64_t ou définir votre propre. De cette façon, votre code sera portable et de ne pas compter sur la plate-forme de détails pour que l'int/long/short tailles.
  • c'est long long dans g++.
  • TonyK je préfère utiliser le type de l'en-tête si disponible, ou un rouleau de mon propre si pas.
InformationsquelleAutor TonyK | 2011-09-30