2

我在编译器的优化设置中启用了内在函数,但是,InterlockedExchange 的生成代码正在生成对 kernel32.dll 的调用,而不是生成内联程序集。这尤其成问题,因为该功能在 Vista 之前的 Windows 版本上不可用。

MSDN 文档指出“此功能是在可能的情况下使用编译器内在实现的”。是否可以让编译器使用 InterlockedExchange 的实际内在代码?

4

1 回答 1

3

互锁的内在函数需要下划线前缀(或#pragma intrinsic),所以你想使用_InterlockedExchange,你还需要包括intrin.h

另外,您完全阅读了您的报价,它是这样说的:

此函数在可能的情况下使用编译器内在函数来实现。有关详细信息,请参阅 Winbase.h 头文件和 _InterlockedExchange

于 2012-01-25T10:57:18.510 回答