在c ++中删除名称冲突的最佳方法

Val*_*ond 2 c++ winapi visual-c++ windows-7

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

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

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

我想到了:

  • 重命名,但我将打破命名约定(它确实是玩家的状态')
  • 把它放在命名空间中,但是我应该把Every class放在命名空间中,这意味着很多工作

有没有其他方式(也许是一个特殊的MSVC 2010 vay)说,排除那个文件或某种"unfine"枚举或其他东西?

[编辑]答案是,大声而清晰,NAMESPACES!+1并感谢所有人!

Xeo*_*Xeo 7

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