Ответ 1
Вот что я ответил:
Я думаю, что лучшим заголовком будет то, что -Wno-error зависит от позиции в командной строке, а -Werror - нет. Важная часть заключается в том, является ли диагностика ошибкой или предупреждением. Пример:
int main() {
int a;
return 0;
}
$ clang main.cpp -Wunused-variable
Это дает предупреждение о неиспользуемой переменной.
$ clang main.cpp -Werror -Wunused-variable
$ clang main.cpp -Wunused-variable -Werror
Оба из них дают неиспользуемую переменную ошибку. -Werror не изменяется поведение, основанное на позиции.
$ clang main.cpp -Werror -Wno-error=unused-variable -Wunused-variable
$ clang main.cpp -Werror -Wunused-variable -Wno-error=unused-variable
Первая дает ошибку, а вторая дает предупреждение. Эта означает, что -Wno-error = * зависит от положения. (GCC выдает предупреждения для обеих этих строк.)
-Werror не взаимодействует или не зависит от предупреждений в командной строке. -Wno-error = предупреждение зависит от его относительного положения к -Wwarning.
С кем я в порядке. Это просто должно быть где-то написано (возможно, я пропустил это!)