Как использовать clang ++ с -std = c ++ 11 -Weverything -Werror

Я хочу скомпилировать следующий файл (temp.cpp):

#include <iostream>

class Foo {
public:
Foo() = default;
};

int main(){
std::cout << "Works!" << std::endl;
return 0;
}

С помощью следующей команды: clang++ temp.cpp -o temp -std=c++11 -Weverything -Werror

Есть ошибка:

temp.cpp: 5: 11: ошибка: определения функций по умолчанию несовместимы с C ++ 98 [-Werror, -Wc ++ 98-compat]

Я понимаю, что есть предупреждение типа c ++ 98-compat, и оно является частью всего. Как включить все предупреждения, кроме c ++ 98-compat? Есть ли совместимый c ++ 11 флаг для -Weverything?

15

Решение

На самом деле, вам, вероятно, не нужны все предупреждения, потому что ряд предупреждений можно рассматривать как стилистические или субъективные, а другие (например, такие, с которыми вы столкнулись) просто глупы в вашей ситуации.

-Weverything изначально был построен по двум причинам:

  • открытие: в противном случае получить список всех доступных предупреждений довольно сложно
  • альтернатива черного списка: с помощью gcc вы выбираете предупреждения, которые хотите применить (белый список), с помощью -Weverything ты выбираешь те, кого не хочешь применять; Преимущество заключается в том, что при переходе на новую версию компилятора вы, скорее всего, получите выгоду от новых предупреждений.

Очевидно, что открытие не совсем совместимо с производственным использованием; поэтому вы, кажется, попали в черный список дело.

Система диагностики Clang выведет (по умолчанию) имя наиболее определенной группы предупреждений, которая отвечает за создание предупреждения (здесь -Wc++98-compat) и каждую группу предупреждений можно отключить, добавив no- сразу после -W,

Следовательно, для внесения в черный список вы получаете:

-Weverything -Wno-c++98-compat -Wno-...

И вам рекомендуется время от времени пересматривать список включенных в черный список предупреждений (например, при обновлении до более нового компилятора).

31

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector