InterlockedExchange Visual Studio 2010 内在
Posted
技术标签:
【中文标题】InterlockedExchange Visual Studio 2010 内在【英文标题】:InterlockedExchange Visual Studio 2010 Intrinsic 【发布时间】:2012-01-25 10:50:28 【问题描述】:我在编译器的优化设置中启用了内在函数,但是,InterlockedExchange 的生成代码正在生成对 kernel32.dll 的调用,而不是生成内联汇编。这尤其成问题,因为该功能在 Vista 之前的 Windows 版本上不可用。
MSDN documentation 声明“此函数在可能的情况下使用编译器内部函数实现”。是否可以让编译器使用 InterlockedExchange 的实际内部代码?
【问题讨论】:
文档(查看您自己的链接)说:“最低支持客户端 - Windows 2000 Professional” 我实际上使用的是 InterlockedExchange64,它只在 Vista 及更高版本上可用。 【参考方案1】:互锁的内在函数需要下划线前缀(或#pragma intrinsic
),因此您要使用_InterlockedExchange
,还需要包含intrin.h
另外,你完整阅读了你的报价,它是这样说的:
此函数是使用编译器内部函数实现的,其中 可能的。有关详细信息,请参阅 Winbase.h 头文件和 _InterlockedExchange。
【讨论】:
以上是关于InterlockedExchange Visual Studio 2010 内在的主要内容,如果未能解决你的问题,请参考以下文章
移植 InterlockedExchange,仅使用 GCC 内在函数
InterlockedExchange() 类型函数/内在函数的 MSDN 文档不一致?