1

嗨我已经编译了以下指定的代码

long (*interlocked_increment) (volatile long *);
long InterlockedIncrement(volatile long & value) const {
        return interlocked_increment(&value);
      }
static long m_interlocked_increment(volatile long * pv) {
#ifdef WIN32
  return InterlockedIncrement(pv); 
#elif defined(HAS_SYNC_FUNCTIONS)
  return __sync_fetch_and_add(pv, 1L);
#else
  return ++(*pv);
#endif
}

在 g++ 编译器中它可以正常工作。但是当我在visual c++ 2008中尝试相同的时候它显示了下面指定的错误。我可以解决这个问题吗?

错误 5 错误 C3861:“InterlockedIncrement”:找不到标识符

4

1 回答 1

2

InterlockedIncrement()函数采用volatile long &,而您将其传递给 a volatile long *,因此编译器找不到相应的函数签名。

于 2013-03-12T06:23:27.367 回答