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++ コンパイラでは正常に動作します。しかし、ビジュアルC ++ 2008で同じことを試している間、以下に指定されたエラーが表示されます.hoはこの問題を解決できますか.

エラー 5 エラー C3861: 'InterlockedIncrement': 識別子が見つかりません

4

1 に答える 1

2

InterlockedIncrement()関数はをvolatile long &渡しますが、 を渡しているvolatile long *ため、コンパイラは対応する関数シグネチャを見つけることができません。

于 2013-03-12T06:23:27.367 に答える