2013-05-29 10 views
6

Ich habe das folgende Programm, das druckt 4. Ich bin dieses Programm auf Windows 7 64-Bit ausgeführt. Soll nicht 8 für 64-Bit-Plattform gedruckt werden? Danke im Voraus.Warum Größe von void Zeiger ist 4 auf Windows 64-Bit-Plattform

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

Kommt es nicht auf den Compiler an? – crush

+6

Sind Sie sicher, dass Sie eine 64-Bit-Binärdatei erstellen? –

+0

Welche Version des Compilers verwenden? Wenn Ihr Compiler 32 Bit ist, wird WOW64 verwendet. und wird sich wie normaler 32-Bit-Prozess verhalten – Guanxi

Antwort

11

Wenn Sie eine kompilierte Sprache wie C verwenden, wird die Größe des Zeigers nicht von der Plattform, auf der bestimmen Sie Ihren Code ausgeführt werden: es hängt nur von der Plattform, für die Sie Ihren Code kompiliert haben.

Windows 7 64-Bit kann Code ausführen, der für 32-Bit-Plattformen kompiliert wurde. Gemessen an der Ausgabe Ihres Programms scheint Ihr Code für Win-32 kompiliert worden zu sein.

In Visual Studio 2010 zu der Eigenschaftsseite Ihres C/C++ - Projekts, und stellen Sie sicher, dass Active (x64) in der Dropdown-Liste "Plattform" ausgewählt ist (es ist standardmäßig Win32). Wenn x64 nicht im Dropdown-Menü verfügbar ist, klicken Sie auf [Configuration Manager...] und wählen Sie x64 für die Plattform Ihres Projekts. Wenn ein Dialogfeld "Kopieren von ..." geöffnet wird, klicken Sie auf [OK], um es zu schließen. Das Programm sollte nach einer Neukompilierung im 64-Bit-Modus laufen.

+0

Ich kompilierte es auf dem gleichen Computer, vielleicht muss ich einige Compiler oder Linker-Optionen enthalten. Weißt du, welche Optionen für 64-Bit kompiliert werden? Ich benutze Visual Studio 2010. Danke – user2340048

+0

@ user2340048 Ich habe die Antwort bearbeitet, um zu erklären, wie für x64 in Visual Studio zu kompilieren. – dasblinkenlight

+0

Gelöst durch Verwendung von Optionen für 64-Bit für den Compiler. – user2340048