VS C+++编译预处理问题

编译平台:vs2015 update3,代码如下:
#ifdef _WIN64
1. inline uint16_t zBSF(unsigned long * Index,uint64_t x)
2. {
3. return _BitScanForward64(Index,x);
4. }
#endif
在编译目标平台选项设为x64的时候没有问题,但是设为x86的时候,第三行报错,错误信息如下:
Error C3861 '_BitScanForward64': identifier not found
我已经做了#ifdef _WIN64预处理了,指示预编译在x86下不要处理这段代码了啊,怎么感觉好像编译器不予理睬一般。这种预处理,我在其他地方用的很多,没有出现过什么问题。这个_BitScanForward64按微软说法是编译器内嵌函数,但是这又如何?指明了不要处理,为啥还处理,头痛失眠,求大神指点
不好意思,囊中空空,没有C币悬赏了啊

3个回答

你的编译器命令行怎么写的,x86方式的命令行贴出来看看。

编译命令行所有选项:
/GS /analyze- /W3 /Zc:wchar_t /ZI /Gm /Od /sdl /Fd"Debug\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\CPPTEST.pch"
链接命令行所有选项:
/OUT:"D:\VS\CPPTEST\Debug\CPPTEST.exe" /MANIFEST /NXCOMPAT /PDB:"D:\VS\CPPTEST\Debug\CPPTEST.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /INCREMENTAL /PGD:"D:\VS\CPPTEST\Debug\CPPTEST.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\CPPTEST.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1


unsigned char _BitScanForward(
   unsigned long * Index,
   unsigned long Mask
);
unsigned char_BitScanForward64(
   unsigned long * Index,
   unsigned __int64 Mask
);


Collapse imageParameters
[out] Index
Loaded with the bit position of the first set bit (1) found.

[in] Mask
The 32-bit or 64-bit value to search.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐