0

使用该参数,在每个错误 gcc 打印出“编译因 -Wfatal-errors 而终止”。

但它一直在继续。实际上并没有停止。

我用:

g++ (x86_64-win32-seh-rev1, Built by MinGW-W64 project) 4.9.2

调用编译器:

@echo off
set LIBRARY_PATH=D:\Projekte\C++\Arsenal of Democracy\sdk\Lib;C:\Program Files (x86)\Microsoft DirectX SDK (August 2008)\Lib\x86
set CPLUS_INCLUDE_PATH=D:\Projekte\C++\Arsenal of Democracy\sdk\Include;C:\Program Files (x86)\Microsoft DirectX SDK (August 2008)\Include

cd src
g++ -m32 -mwindows -w -Wfatal-errors -std=c++14 -o ../AODGame.exe *.cpp
cd ..

编译时间与没有参数时大致相同。错误的数量也相同。

但是,如果我构建一个最小的例子:

int main()
{
  cout << "Bla." << endl; // 1st error - should abort here
  t - q = v;              // 2nd error - should not reach nor report
}

并用_

g++ -Wfatal-errors -o Test Test.cpp

然后它确实起作用了,第二个错误永远不会出现(并且它没有参数)。

这种不规则的原因可能是什么?我该如何规避它?

显然我不在乎一个小例子的编译是否中止,但是对于一个真实的项目,节省的时间是——或者更确切地说是——实际上是有价值的。

我搜索了这个问题,只发现了大约两年前关于相同参数的不同问题的主题(不适用于 Clang,不包含在 gcc 3.x 中等),这些似乎都不适用于这里。

--

要遵循@David Macek 的评论,具有相同类型的第一个错误的最小示例是

#include <vector>

using namespace std;

template<class X> void test(vector<X> & v)
{
  vector<X>::iterator i = v.begin();
}

int main()
{
  t - v = q;
}

它也在第一个错误之后正确终止,并且永远不会到达 main 中的表达式。

4

0 回答 0