我在编译器的优化设置中启用了内在函数,但是,InterlockedExchange 的生成代码正在生成对 kernel32.dll 的调用,而不是生成内联程序集。这尤其成问题,因为该功能在 Vista 之前的 Windows 版本上不可用。
MSDN 文档指出“此功能是在可能的情况下使用编译器内在实现的”。是否可以让编译器使用 InterlockedExchange 的实际内在代码?
我在编译器的优化设置中启用了内在函数,但是,InterlockedExchange 的生成代码正在生成对 kernel32.dll 的调用,而不是生成内联程序集。这尤其成问题,因为该功能在 Vista 之前的 Windows 版本上不可用。
MSDN 文档指出“此功能是在可能的情况下使用编译器内在实现的”。是否可以让编译器使用 InterlockedExchange 的实际内在代码?
互锁的内在函数需要下划线前缀(或#pragma intrinsic
),所以你想使用_InterlockedExchange
,你还需要包括intrin.h
另外,您完全阅读了您的报价,它是这样说的:
此函数在可能的情况下使用编译器内在函数来实现。有关详细信息,请参阅 Winbase.h 头文件和 _InterlockedExchange。