저는 visual studio pro 2010에서 64 비트 C++ 프로젝트를 컴파일하고 있으며 포인터의 크기를 테스트하고 있습니다. void *, char * 등 sizeof (모든 포인터)가 4 바이트임을 보여줍니다. 이것은 64 비트 시스템에서는 잘못되었습니다. 그러나 sizeof (UINT_PTR)는 8이며 이는 64 비트에 맞습니다.sizeof (void *)는 64 목표에서 4입니다.
내 전 처리기 정의는 다음과 같습니다. _WIN64; _AMD64; _WINDOWS; _DEBUG; _USRDLL;
대상 컴퓨터가 MachineX64 (/ MACHINE : X64)입니다.
사물의 sizeof()가 정의 된 곳이 있습니까? 그렇지 않으면, 왜 그것이 나에게 잘못된 크기를주고 있는지 알아낼 수 있습니까?
감사합니다.
편집 : 컴파일러 명령 행 :
이/Zi /nologo /W4 /WX- /Od /D "_WIN64" /D "_AMD64" /D "_WINDOWS" /D "_DEBUG" /D "_USRDLL" /D "_WINDLL" /D "_MBCS" /D "_AFXDLL" /Gm /EHsc /RTC1 /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fp"x64\Debug\S2TalkerDLL.pch" /Fa"x64\Debug\" /Fo"x64\Debug\" /Fd"x64\Debug\vc100.pdb" /Gd /errorReport:queue
링커 명령 행 : 분에
/OUT:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\S2TalkerDLL\x64\Debug\S2TalkerDLL.dll" /INCREMENTAL /NOLOGO /DLL "WINMM.lib" /DEF:".\S2TalkerDLL.def" /MANIFEST /ManifestFile:"x64\Debug\S2TalkerDLL.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\S2TalkerDLL\x64\Debug\S2TalkerDLL.pdb" /SUBSYSTEM:WINDOWS /PGD:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\S2TalkerDLL\x64\Debug\S2TalkerDLL.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X64 /ERRORREPORT:QUEUE
실수가 있어야합니다. 64 비트 VC++ 프로젝트에서 테스트했을 때'sizeof (void *) == sizeof (UINT_PTR) == 8'이되었습니다. 사용중인 모든 컴파일러 및 링커 스위치를 나열 할 수 있습니까? –
명령 줄 값이있는 편집 된 게시물입니다. – Matt