【问题标题】:Finding location where C++ namespace is included in MSVC查找 MSVC 中包含 C++ 命名空间的位置
【发布时间】: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


【解决方案1】:

听起来你可能想要/showIncludes

另一方面,您可能只想为“使用命名空间 foo”做一个在所有文件中查找。

或者也许两者都做以追踪哪些可能的标头实际上包含在有问题的区域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2011-02-08
    相关资源
    最近更新 更多