【发布时间】:2015-10-05 06:15:38
【问题描述】:
我正在 Visual Studio 中处理一个大型 C++ 项目,它报告说枚举不明确,因为某个命名空间(比如 foo)中的枚举具有相同的名称。由于命名空间 foo 不应该在这个文件中使用,我想知道命名空间被添加到哪里,以便我可以删除它。如何找出具有using namespace foo 的 C++ 标头的包含链?如果可能的话,我希望能够在 Visual Studio 中执行此操作。
【问题讨论】:
-
@CaptainObvlious 问题似乎不在于声明本身,问题似乎在于有人将
using namespace foo放在不应该的地方。这就是为什么每个人都建议永远不要将using放入你的头文件中。 -
@CaptainObvlious 我知道有问题的标识符在哪里声明,但是,它是在命名空间 foo 中声明的,如果不是因为标题中的错误
using namespace foo行,我不会遇到这个问题。 -
我相信有一个编译器选项可以设置为在所有预处理器替换发生后获取文件的内容。搜索这些文件。
-
@MarkRansom 它甚至会将预处理结果转储到文件中,搜索命名空间 foo。会有指令说明文件开始和结束的位置(编译指示),您可以展开它并计算出包含链。现在OP的问题也是有
using namespace blah的headers,有很多问题。
标签: c++ visual-studio visual-c++ namespaces