MinGW-64'ü indirdim, böylece Windows 7 için 64-bit programları g ++ 4.7.0 (deneysel) kullanarak derleyebilirim. Ama aşağıdaki satırı:64-bit C++ 'da uzun boylu (uzun) C++
cout << sizeof(long) << " " << sizeof(void*) << endl ;
baskılar 4 8
değil 8 8
. g ++ 4.6.0 belgeleri diyor ki:
64-bit ortamı setleri 32 bite int ve 64 bit
uzun ve işaretçi
sizeof(long)
8 olmamasının sebebi
bilen var mı?
Eklenme: Benim karışıklığımın kaynağı, 64-bit Windows için g ++ 4.7.0'ın (henüz) GNU Derleyici Koleksiyonunun resmi bir kısmı olmamasıydı. Ve bu 32-bit long
ile ilk 64-bit sürümü, bu yüzden belgelere sadece onun için geçerli değildir. Eğer relevant web page giderseniz Nitekim, IA-32/x86-64 için tam giriş bu oluşur:
... microsoft windows işletim sistemi üzerinde
Şunun gibi görünüyor: Birisi sadece seri olarak herhangi bir yorum bırakmadan cevapların yarısını düşürdü ... – Mysticial
@Mystical: Ve benim sorum da! – TonyK
64 bitlik bir tam sayıya ihtiyacınız varsa int64_t/uint64_t kullanın veya kendiniz tanımlayın. Bu şekilde kodunuz taşınabilir olacak ve int/long/short boyutları için platform özelliklerine güvenmeyecektir. – David