编译C++程序时,从哪里开始检查错误消息

Where to start examining error message when compiling C++ programs?

本文关键字:开始 检查 错误 消息 C++ 程序 编译      更新时间:2023-10-16

编译C++程序时,我经常会遇到错误消息,其中一些消息很容易破译,但另一些消息很长,因此很有挑战性。在Python中,通常从查找错误消息中的最后一条语句开始。在C++中检查长编译器错误消息时应该如何处理?

我猜模板误用引起的错误,可能来自标准库,正在困扰您。有几种方法可以做到这一点,但是,我发现最好找到(长)错误报告中与我的代码相关的部分,而不是一些STL头(比如<vector>)。然后,您可以尝试从那里推断错误,来回查看报告的其他错误,"遵循类型"。

还有一些"错误分析器",它们依赖于编译器及其版本,但有些人发现它们很有用。"STLFilt"是其中之一,但我从未使用过它,所以不能说它有多好。

此外,尝试使用CLang进行编译,它比大多数编译器具有更好的错误报告功能,尽管GCC最近正在迎头赶上。它有GCC和CL(Microsoft Visual C/C++编译器)的"插入式"替代品。

从第一个错误开始。这些通常是最相关的。后面的错误通常是由第一个错误引起的,所以消除第一个错误通常也会省略后面的一堆错误。重复冲洗,直到全部固定。

正如另一个答案中所提到的,使用多个不同的编译器编译代码通常会很有帮助,因为它们会以不同的方式显示错误,并且某些错误使用某些编译器会产生比其他编译器更好(更容易理解)的错误报告。用不同的方式描述这个问题通常有助于理解(我个人用clang 3.8、gcc 6.1和VS2015构建了所有东西,除了有助于处理不同的错误输出外,不同的编译器也会发现不同的错误——这是一个额外的好处)。