2013-05-29 1 views
6

다음 프로그램을 인쇄합니다. Windows 7 64 비트에서이 프로그램을 실행하고 있습니다. 64 비트 플랫폼에서 8을 인쇄하면 안됩니까? 미리 감사드립니다. 당신은 C로 컴파일 된 언어를 사용하는 경우Windows 64 비트 플랫폼에서 void 포인터의 크기가 4 인 이유

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

컴파일러에 의존하지 않습니까? – crush

+6

64 비트 바이너리를 빌드 하시겠습니까? –

+0

어떤 버전의 컴파일러를 사용하고 있습니까? 컴파일러가 32 비트이면 WOW64를 사용합니다. 정상적인 32 비트 프로세스처럼 동작합니다 – Guanxi

답변

11

, 포인터의 크기가있는 당신이 당신의 코드를 실행하는 플랫폼에 의해 결정되지 않은 : 그것은 단지 당신이 당신의 코드를 컴파일하는 플랫폼에 따라 달라집니다.

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

관련 문제