Почему -Wfatal-errors отключает заметки об ошибке и как мне снова включить notes?

#c #compilation #g

#c #Сборник #g

Вопрос:

Я часто собираю с -Wfatal-errors , потому что мне не нужны дополнительные 100 бессмысленных ошибок, в то время как компилятор героически пытается проанализировать оставшуюся часть исходного файла после опечатки, которая делает его бессмысленным.

Однако я заметил, что это также отключает диагностические заметки о самой фатальной ошибке. Например, с -Wfatal-errors я получу, скажем,

 main.cpp:10:2: error: invalid new-expression of abstract class type 'C'
  new C();
  

в то время как, если у меня нет -Wfatal-errors включения, я получу сообщение о том, какой виртуальный метод я забыл реализовать:

 class.hpp:15:2 note: because the following virtual functions are pure within 'C':
class.hpp:28:6   void C::f()
  

Могу ли я вернуть эти заметки, сохраняя при этом поведение, при котором я завершаю работу после одной ошибки?

Ответ №1:

Вы ищете -fmax-errors=1 . Это приведет к завершению компиляции после первой ошибки, но все равно покажет примечания к этой ошибке.

Вот демонстрация для сравнения эффектов этих флагов.