c++ - 在 C++ 中消除名称冲突的最佳方法

标签 c++ visual-c++ windows-7 winapi

我刚从 WinXP 升级到 7,我不得不将 Windows SDK 添加到我的项目中以使其编译。

到目前为止一切顺利,但我的第二个项目遇到了障碍,“PlayerState”在我的项目中用作类,在 Windows SDK (effects.h) 中用作枚举,这显然会产生错误(错误 C2011:' PlayerState' : 'struct' 类型重定义)。

解决这个问题的最佳方法是什么?

我想到了:

  • 重命名,但我会打破命名惯例(这确实是玩家的“状态”)
  • 把它放在一个命名空间中,但是我应该把每个类都放在一个命名空间中,这意味着很多工作

是否有任何其他方式(可能是特殊的 MSVC 2010 vay)排除该文件或某种“取消定义”枚举或其他方式?

[edit] 答案是,响亮而清晰,命名空间! +1,谢谢大家!

最佳答案

命名空间,毕竟这就是它的用途。分组并避免名称冲突。如果您遍历代码库并将所有内容都放在命名空间中,这不会有什么坏处。这是您应该一直在做的事情。

关于c++ - 在 C++ 中消除名称冲突的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363047/

相关文章:

c++ - 这个尾随返回类型为 `this` 的函数指针是否合法?

C++ std::vector 与现实世界中的数组

c++ - 使用整数标识符在共享内存上构造对象

c++ - 错误 C2679 : binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)

.net - PrintDialog.ShowDialog(this) 在 Windows 7 上立即返回 DialogResult.Cancel

c++ - 在此 "number of elements"宏中添加虚拟字符的目的是什么?

c++ - 将数据从 C++ 加载到 QML Scatter3d 项

c - vc中的静态变量

javascript - 我可以在 IIS 上从 "Classic"ASP 生成 JSON 吗?

linux - LUA 管道到 WIn 7 x64 中的 cygwin - os.execute