【问题标题】:MSVC Output filename of file being compiledMSVC 正在编译的文件的输出文件名
【发布时间】:2021-02-20 03:25:49
【问题描述】:

我使用的是 Visual Studio 2019。当我构建解决方案时,有时会收到如下错误:

C2825 'TContainer' must be a class or namespace when followed by '::'    MyProject   MyHeaderFile.h

由于MyHeaderFile.h 是一个模板文件,我想知道哪个文件包含它,因为这就是错误所在。 我怎样才能让构建向我展示如下内容:

Compiling 'MySourceFile.cpp'
C2825 'TContainer' must be a class or namespace when followed by '::'    MyProject   MyHeaderFile.h

我已经尝试了每个编译器开关。 我目前必须单独编译每个包含该标头的 .cpp 才能找到问题。 我正在使用预编译的头文件。 编辑: 我注意到 #pragma message("MySourceFile.cpp") 也不输出文件名。我不知道这是否是一个线索。

编辑,对于那些询问的人,这是 cpp 文件名不包含在输出窗口中的证明。

编辑: Vlad 的普通控制台向导构建:

【问题讨论】:

  • 请确保将 C++ 标签添加到 C++ 问题中。对于这个问题,verbosity 标签似乎毫无意义,尽管其他几个标签似乎也没有必要。
  • 请从字面上引用输出窗口中的完整错误消息,包括周围的错误消息。它们应该指向确切的源文件和行号。
  • @dvix 我在 header 文件中有确切的行点,该错误正在发生,但这是由于使用了模板。如果我使用具有不同 .cpp 的相同模板,它可以工作。这不是我要查找的错误的位置,而是它的根源。如果我有正在编译的文件的名称,那将充分缩小范围。
  • @Ant 输出窗口中的错误会显示原始源文件和行号。确保您正在查看“输出”窗口,该窗口是从“查看/输出”菜单中打开的。
  • @Ant 提供上下文和详细信息可以提高您获得更好答案的机会。这是否值得你去权衡。

标签: c++ visual-c++ c++17 precompiled-headers


【解决方案1】:

工具 -> 选项 -> 项目和解决方案 -> 构建和运行:

"MSBuild project build output verbosity:" - 当我将它设置为 Quiet - 文件名和#pragma message 一起消失了

【讨论】:

  • 谢谢!就是这样。我已将其设置为 Minimal,现在可以看到正在编译的文件的文件名和 pragma 消息。再次抱歉,我之前听起来很忘恩负义。您认为值得编辑您的答案以仅显示后半部分吗?
  • @Ant - 太棒了!完毕。我还删除了“调试”消息;你也可以
猜你喜欢
  • 1970-01-01
  • 2011-01-19
  • 2011-06-10
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多