如果你传入的v是64位类型,编译器就会自动生成64位操作数的bsf指令,所以说最好用intrinsics替换内嵌汇编。
VC++ 64未编译器不支持内嵌汇编,你非要用的话,要么换intel C++,要么连接外部汇编.obj。最简单的方法是用intrinsics替换内嵌汇编,可以32位、64位通用: #include <intrin.h> static __forceinline int GetMinStep(unsigned int v) { unsigned long index; if (_BitScanForward(&index, v)) return index; else return -1; }
21,458
社区成员
41,601
社区内容
加载中
试试用AI创作助手写篇文章吧