【问题标题】:Architecture-generic InterlockedIncrement for 32/64-bit用于 32/64 位的体系结构通用的 InterlockedIncrement
【发布时间】:2013-12-14 10:33:23
【问题描述】:

使用 32 位和 64 位架构通用的 C++ InterlockedIncrement 功能的最佳方式是什么? (有分离的功能)

有没有比使用#if _W64 预处理器命令更好的方法?

【问题讨论】:

  • 可以使用 C++11 原子类型。
  • 您应该问的问题是为什么您在 32 位和 64 位版本中使用不同的整数类型。也许您可以显示您希望操作的变量的声明。
  • 您可以使用 C 预处理器粘贴操作符来构建一个宏,该宏可以为您的系统解析正确的名称。
  • 这是一个很好的答案。但是,我不能在我的项目中使用它。还有其他选择吗?
  • 请告诉我们您正在操作什么类型的变量

标签: c++ 64-bit 32bit-64bit interlocked interlocked-increment


【解决方案1】:

最简单的解决方案,因为您使用的是 C++:

inline LONGLONG __cdecl InterlockedIncrement(LONGLONG volatile *Addend)
{
  return InterlockedIncrement64(Addend);
);

现在您可以在 32 位或 64 位变量上无条件调用 InterlockedIncrement,无论是 32 位还是 64 位版本。

【讨论】:

  • 我可以解释一下吗?
猜你喜欢
  • 2011-03-11
  • 2010-12-23
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 2011-10-21
  • 2021-11-25
  • 1970-01-01
  • 2012-09-01
相关资源
最近更新 更多