私はVisual Studio 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