parametros ejecutar con compilar compilador g++ suppress-warnings

g++ - ejecutar - la advertencia de gcc "''se inicializará después de''



gcc wikipedia (6)

Asegúrese de que los miembros aparecen en la lista de inicializadores en el mismo orden en que aparecen en la clase

Class C { int a; int b; C():b(1),a(2){} //warning, should be C():a(2),b(1) }

o puede activar -Wno-reorder

Recibo muchas de estas advertencias del código de terceros que no puedo modificar. ¿Hay alguna manera de desactivar esta advertencia o al menos deshabilitarla para ciertas áreas (como #pragma push / pop en VC ++)?

Ejemplo:

list.h:1122: warning: `list<LogOutput*, allocator<LogOutput*> >::node_alloc_'' will be initialized after list.h:1117: warning: `allocator<LogOutput*> list<LogOutput*, allocator<LogOutput*> >::alloc_''


El orden de inicialización no importa. Todos los campos se inicializan en el orden de su definición en su clase / estructura. Pero si el orden en la lista de inicialización es diferente, gcc / g ++ genera esta advertencia. Solo cambie la orden de inicialización para evitar esta advertencia. Pero no puede definir el campo usando en inicialización antes de su construcción. Será un error de tiempo de ejecución. Entonces cambias el orden de definición. ¡Ten cuidado y mantente atento!


Para aquellos que usan QT con este error, agréguenlo al archivo .pro

QMAKE_CXXFLAGS_WARN_ON += -Wno-reorder


Puede desactivarlo con -Wno-reorder .


Si ve errores de los encabezados de la biblioteca y está utilizando GCC, puede desactivar las advertencias incluyendo los encabezados con -isystem lugar de -I .

Características similares existen en clang .

Si está utilizando CMake, puede especificar SYSTEM para include_directories .


use -Wno-reorder (man gcc es tu amigo :))