2013-05-29 85 views
6

我有以下打印的程序4.我在Windows 7 64位上運行此程序。不應該爲64位平臺打印8嗎?提前致謝。爲什麼在Windows 64位平臺上void指針的大小是4

#include <stdio.h> 
void main() 
{ 
    printf("%d", sizeof(void*)); 
} 
+0

它不依賴於編譯器嗎? – crush

+6

你確定你正在構建一個64位的二進制文件嗎? –

+0

什麼版本的編譯器使用?如果你的編譯器是32位的,它將使用WOW64。並會表現得像普通的32位程序 – Guanxi

回答

11

當您使用匯編語言,如C,指針的大小不是由正在其上運行代碼的平臺決定:只取決於您已編譯代碼的平臺。

Windows 7 64位可以運行爲32位平臺編譯的代碼。從你的程序輸出來看,你的代碼似乎已經爲Win-32編譯過了。

在Visual Studio 2010中,轉至C/C++項目的屬性頁,並確保在「平臺」下拉列表中選擇了Active (x64)(默認爲Win32)。如果x64在下拉菜單中不可用,請單擊[Configuration Manager...],然後選擇x64作爲項目的平臺。如果「Copy from ...」對話框打開,請點擊[OK]解除它。程序在重新編譯後應該以64位模式運行。

+0

我將它編譯在同一臺計算機上,也許我必須包含一些編譯器或鏈接器選項。你知道什麼選擇將編譯爲64位。我正在使用visual studio 2010.謝謝 – user2340048

+0

@ user2340048我編輯了答案,以解釋如何在visual studio中編譯x64。 – dasblinkenlight

+0

通過爲編譯器使用64位選項解決。 – user2340048

相關問題