Ho scaricato MinGW-64, quindi ora posso compilare programmi a 64 bit per Windows 7, utilizzando g ++ 4.7.0 (sperimentale). Ma la seguente riga:sizeof (long) in C++ a 64 bit
cout << sizeof(long) << " " << sizeof(void*) << endl ;
stampe 4 8
, non 8 8
. La documentazione per g ++ 4.6.0 dice:
I set ambiente a 64 bit int a 32 bit e lunga e puntatore a 64 bit
Qualcuno sa perché non è sizeof(long)
8?
Modificato per aggiungere: La fonte della mia confusione era che g ++ 4.7.0 per Windows a 64 bit non è (ancora) una parte ufficiale della raccolta del compilatore GNU. Ed è la prima versione a 64 bit con un 32-bit long
, quindi la documentazione semplicemente non si applica ad esso. In effetti, se si va al relevant web page, la voce completo per IA-32/x86-64 si compone di questo:
...
Sembra qualcuno ha appena messo in serie la metà delle risposte senza lasciare alcun commento ... – Mysticial
@Mystical: E anche la mia domanda! – TonyK
Se è necessario un numero intero a 64 bit, utilizzare int64_t/uint64_t o definirne uno proprio. In questo modo il tuo codice sarà portatile e non si baserà sulle specifiche della piattaforma per le dimensioni int/long/short. – David