我正在开发一个使用 Visual C++ 编译器 2010(和 2008)编写并使用的项目。我正在尝试使用新的 VC++11,但我对已经实现的功能有疑问。我们已经实现了 typdef struct atomic_int和memory_order但它们在 VC 11 中添加了几乎相同的功能,我得到了这些错误
error C2011: 'std::memory_order' : 'enum' type redefinition
(D:\_work\wp-test\lib\Item.cpp) d:\_work\wp-test\lib\system\Atomic.h
如果我将我们的实现捕获到#if 语句中
#if _MSC_VER >= 1700
#include <atomic>
#else
//out implementation
namspace std{
typedef enum memory_order
{
memory_order_relaxed,
...
} memory_order;
typedef struct atomic_int{
...
}
}
#endif
似乎可行,但是缺少一个未在 VC 11 中实现的功能,并且另一个功能无法转换参数
error C2039: 'compare_swap' : is not a member of 'std::atomic_int'
D:\_work\wp-test\lib\network\ConnectionSocket.cpp
error C2664: 'std::atomic_int::atomic_int(const std::atomic_int &)' :
cannot convert parameter 1 from 'int' to 'const std::atomic_int &'
(D:\_work\wp-test\lib\Item.cpp) D:\_work\wp-test\lib\system\Cache.h
请帮我找到一些解决方案......如何从 VC++11 覆盖整个atomic_int,或者如何将 memeber 添加到?谢谢