Я загрузил MinGW-64, поэтому теперь могу скомпилировать 64-разрядные программы для Windows 7, используя g++ 4.7.0 (экспериментальный). Но следующая строка:
cout << sizeof(long) << " " << sizeof(void*) << endl ;
выводит 4 8
, а не 8 8
. В документации для g++ 4.6.0 говорится:
64-разрядная среда устанавливает int до 32 бит и длиной и указатель на 64 бит
Кто-нибудь знает, почему sizeof(long)
не 8?
Отредактировано для добавления: Источником моей путаницы было то, что g++ 4.7.0 для 64-разрядной Windows еще не является официальной частью сборника GNU Compiler. И это первая 64-битная версия с 32-разрядным long
, поэтому документация просто не относится к ней. Действительно, если вы перейдете на соответствующую веб-страницу, полная запись для IA-32/x86-64 состоит из это:
...