2016-05-01 2 views
3

Я использую Qt5 с Clang на Debian Jessie. Для того, чтобы экспериментировать с родовыми лямбды, в файле .pro есть:предупреждение: спецификатор типа «auto» является расширением C++ 11 [-WC++ 11-extensions]

CONFIG += c++14 

И после того, как здания, которое я получил:

warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] 

Чтобы избавиться от этого очевидного сообщения я сделал:

QMAKE_CXXFLAGS += -Wc++11-extensions 

Но я все время получаю очевидное сообщение. Зачем? Как скрыть это?

+0

Не дублируется. Другой вопрос о том, как включить C++ 14 в Qt Creator, который я делаю с помощью 'CONFIG + = C++ 14' (протестирован в Windows, отлично работает). – KcFnMi

+0

Обычно это предупреждение включается только в том случае, если вы были в режиме pre-C++ 11, поэтому я подозреваю, что ваш вариант CONFIG на самом деле не работает –

ответ

7

Вы хотите QMAKE_CXXFLAGS += -Wno-c++11-extensions Я подозреваю.

clang compiler documentation

соответствующая часть:

-Wfoo: Включить предупреждение foo.

-Wno-foo: Отключить предупреждение foo.

+0

У вас есть ссылка на ваш ответ? Я не вижу здесь никакого эффекта. – KcFnMi

+0

У меня нет, просто по моему опыту вам нужно поставить «нет», чтобы подавить предупреждение. – Jfevold

+0

Yout забыл, что '' '' '' -Wno-C++ 11-extensions''. – KcFnMi

9

Согласно истории репозитория QMAKE, тем CONFIG += c++14 строфа была добавлена ​​в QMAKE версии 5.4: https://codereview.qt-project.org/#/c/87831/

Тем не менее, кажется Debian Jessie только имеет QMAKE версии 5.3 (https://packages.debian.org/jessie/qt5-qmake)

В качестве обходного пути, вы можно использовать

QMAKE_CXXFLAGS += -std=c++14 

или

QMAKE_CXXFLAGS += -std=gnu++14 
+0

'QMAKE_CXXFLAGS + = -std = C++ 1y' также работает здесь (в Джесси). Вы пошли прямо к делу. Интересно, что в Windows, где я использую 'CONFIG + = C++ 14', его нельзя заменить какой-либо из« альтернативных »строф – KcFnMi

Смежные вопросы