我想包含 std::unique_lock 和
编辑:包含 RRD 和
error C2371: 'rl::condition_variable' : redefinition; different basic types C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\mutex 58 1 test_hashtable
error C2371: 'rl::mutex' : redefinition; different basic types C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\mutex 100 1 test_hashtable
error C2371: 'rl::recursive_mutex' : redefinition; different basic types C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\mutex 114 1 test_hashtable
最佳答案
您可以#include
RRD 到它自己的命名空间中:
namespace RRD {
#include <rrd.h>
}
除非 RRD 引用全局命名空间函数(例如 ::isalnum
),否则这应该有效。
然后,将类导入到当前的命名空间中:
#ifdef DETECT_RACE_CONDITIONS
using RRD::std::mutex;
#else
using std::mutex;
#end
using std::unique_lock;
最后,在代码中使用 mutex
,而不是 std::mutex
。如果您关心全局命名空间中的内容,则可以将上述代码包装在其自己的命名空间
中。
关于c++ - 解决包含冲突(重新定义)或如何有选择地包含声明的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558421/