Estou recebendo muitos desses avisos do código de terceiros que não posso modificar. Existe uma maneira de desabilitar esse aviso ou, pelo menos, desabilitá-lo para determinadas áreas (como #pragma push / pop no VC ++)?
Exemplo:
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_'
g++
suppress-warnings
LK__
fonte
fonte
Respostas:
Verifique se os membros aparecem na lista de inicializadores na mesma ordem em que aparecem na classe
ou você pode ligar
-Wno-reorder
fonte
b
ea
inicialização pode depender um do outro. Um usuário ingênuo pode tentar alterar a ordem de inicialização para obter algum efeito e o Aviso deixaria claro que não funciona.-Wno-reorder
sem mencionar os problemas que poderiam levar a. Estou ciente de que o OP não pediu outros detalhes, mas uma resposta tão votada que eu esperaria mencionar pelo menos o contexto e as advertências em torno disso. Não devemos responder à pergunta que o OP deveria ter escrito?Você pode desativá-lo com
-Wno-reorder
.fonte
Para aqueles que usam o QT com esse erro, adicione-o ao arquivo .pro
fonte
use
-Wno-reorder
(man gcc é seu amigo :))fonte
Se você estiver vendo erros nos cabeçalhos da biblioteca e estiver usando o GCC, poderá desativar os avisos incluindo os cabeçalhos usando em
-isystem
vez de-I
.Recursos semelhantes existem no clang .
Se você estiver usando o CMake, poderá especificar
SYSTEM
parainclude_directories
.fonte
SYSTEM
"?include_directories
linha.A ordem de inicialização não importa. Todos os campos são inicializados na ordem de sua definição em sua classe / estrutura. Mas se a ordem na lista de inicialização for diferente, gcc / g ++ gere esse aviso. Altere apenas a ordem de inicialização para evitar esse aviso. Mas você não pode definir o campo usando na inicialização antes de sua construção. Será um erro de tempo de execução. Então você altera a ordem da definição. Tenha cuidado e mantenha a atenção!
fonte
a ordem é importante porque se a é inicializado antes de be dependem de b. comportamento indefinido será exibido.
fonte