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