Tentando se livrar de um c ++ aviso boost
Pergunta
Sempre que incluem impulso no meu projeto eu recebo um milhão desses avisos. Alguém sabe como posso me livrar das advertências?
../ depende \ boost / config / abi_prefix.hpp (19) : C4103 aviso: 'Depende \ boost \ config \ abi_prefix.hpp' : Alinhamento mudado após incluindo cabeçalho, pode ser devido a falta #pragma Pack (POP)
Eu sei que posso fazer um #pragma desativar o aviso, mas eu gostaria de saber a razão para estas advertências.
Solução
A razão é que o impulso não push / pop esses pragmas em cada arquivo que os dados precisam ser embalado. Eles #include um arquivo separado que faz o push (abi_prefix.hpp), e depois outro (abo_suffix.hp) depois que faz o pop.
Isso lhes permite reutilizar o mesmo código #pragma pacote em todos os lugares, o que é útil, pois pode variar entre compiladores.
É perfeitamente seguro embora. O impulso #pragma é seguido por uma pop, é apenas incluído a partir de um arquivo diferente. Então você provavelmente só deve desativar esse erro.
Outras dicas
Sim, você terá que partir do #pragma pack directiva em config / ABI / msvc_prefix.hpp. Ele indica que a embalagem padrão do seu projeto não é 8. Isso é muito incomum, é este intencional? Erros devido à embalagem diferenças podem ser um pouco complicado de diagnosticar.
Eu encontrei uma maneira de se livrar deste aviso.
Você precisa editar o arquivo boost_1 _ ** \ boost \ config \ user.hpp e descomente a linha com BOOST_DISABLE_ABI_HEADERS
Então você deve ser definir neste arquivo:
#define BOOST_DISABLE_ABI_HEADERS
Uma vez feito isto, construir apenas com bjam como faria normalmente .
Por favor, veja comentários abaixo para perigos desta solução