为什么在vs2010中InterlockedAdd不可用?

8
我已经包含了windows.h并想在vs2010中使用InterlockedAdd,但编译时出现错误"identifier not found",但是InterlockedIncrement可以正常工作。我尝试使用:
#include <intrin.h>
#pragma intrinsic(_InterlockedAdd) 

出现编译错误:

警告 C4163:'_InterlockedAdd':不可用作内部函数
1>test10.cpp(107):错误 C3861:未找到标识符“InterlockedAdd”

该代码有什么问题?


似乎http://connect.microsoft.com/VisualStudio/feedback/details/524100/interlockedadd-is-where在讨论它。 - jcoder
1个回答

16

InterlockedAdd 函数只适用于 Itanium 平台。在 x86 和 x86-64 平台上可以使用 InterlockedExchangeAdd 代替。它也会向目标变量添加一个值,但它返回的是原始值而不是新的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接