Как мога да спра предупрежденията за неизползвани лични полета?

Докато компилирам колекция от файлове в Qt проект, виждам много предупреждения, подобни на това.

In file included from /usr/local/Trolltech/Qt-4.8.6/include/QtGui/qevent.h:52:
/usr/local/Trolltech/Qt-4.8.6/include/QtGui/qmime.h:119:10: warning: private field 'type' is not used [-Wunused-private-field]
    char type;
     ^

Според предложения от различни търсения, аз добавих записа

QMAKE_CXXFLAGS += -Wno-unused-private-field

към .pro файла и потвърди, че той се показва правилно в извикванията на компилатора, но все още получавам това предупреждение.

Пускам Qt на Mac с clang.

Благодаря предварително за всякакви идеи.


person David    schedule 25.07.2013    source източник


Отговори (4)


Според този отговор опитайте

QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-private-field

Изглежда, че флаговете QMAKE_CXXFLAGS_WARN_ON се добавят към командния ред на компилатора след QMAKE_CXXFLAGS и биха активирали отново това предупреждение (защото QMAKE_CXXFLAGS съдържа -Wall).

person Richard Smith    schedule 30.07.2013

Звучи странно, че не можете да компилирате поради Qt библиотека. Тъй като не разработвам на Mac, това, което бих проверил, е за поддържани версии/компилатори на Mac и как да компилирам на Mac. След това, ако отговаряте на изискванията, ще докладвам това като грешка.

Друг подход (както вече беше съобщено в този QT-Bug: To #include генерира предупреждения) е да включи прагми около предупредени заглавки.

 #pragma GCC diagnostic ignored "-Wunused-private-field"
 #include <QtGui>
 #pragma GCC diagnostic warning "-Wunused-private-field"
person kikeenrique    schedule 30.07.2013
comment
Не казах, че не мога да компилирам --- просто не можах да разбера как да премахна определено предупреждение. - person David; 30.07.2013
comment
@David, не съм разбрал правилно. Може да помогне на игнорирането на прагмата. - person kikeenrique; 30.07.2013
comment
Има какво да се каже за този подход, така че предупрежденията все още да са налични за потребителски код, за разлика от кода на библиотеката, въпреки че мразя да замърсявам кода си с тези неща. Въпреки това, тъй като изтеглих целия изходен код за Qt, се изкушавам просто да премахна неизползваното поле сам! - person David; 30.07.2013
comment
gcc не знае за -Wunused-private-field и ще предупреди с неизвестна опция, след като това е специфично за clang предупреждение. - person Catskul; 29.10.2020
comment
clang поддържа gcc прагми, затова кодът показва GCC. Но това не означава, че това конкретно предупреждение съществува в GCC, това беше пример. clang.llvm.org/docs/UsersManual.html#pragma-gcc- диагностика - person kikeenrique; 30.10.2020

Първо, не съм сигурен по точки дали има грешка в QT или не, но намерих един скорошен въпрос във форума на QT за същото. Надявам се да се реши.

Възможен бъг: qmime.h предупреждение „char type is unused“

Има още един, Clang 4.2 предупреждава за QMacMime неизползвано частно поле "type"

Това може да ви помогне.

person Santosh Dhanawade    schedule 30.07.2013
comment
Това не са грешки, доколкото знам --- предполагам, че са законни предупреждения за кода на Qt, но е жалко, че хората от Qt не са се уверили, че кодът им няма такива неща като неизползвани полета и други неща, които биха предизвикали предупреждения. - person David; 30.07.2013

Не съм клангер, но според http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-in-system-headers можете да използвате флага -isystem с директорията, в която са тези Qt заглавки, което ще ги третира като системни включва и потиска предупреждения за тях.

person Crowman    schedule 25.07.2013
comment
Опитах се да добавя QMAKE_CXXFLAGS += -isystem-prefix /usr/local/Trolltech/Qt-4.8.6/include/ и QMAKE_CXXFLAGS += -isystem /usr/local/Trolltech/Qt-4.8.6/include/, но това не не помагам. - person David; 25.07.2013