使用该参数,在每个错误 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 中的表达式。