gcc подтверждает параметр -Wfatal-errors, но не воздействует на него

Используя параметр, после каждой ошибки 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.

0 ответов

Другие вопросы по тегам