Prova di sbarazzarsi di un avviso boost c ++
Domanda
Ogni volta che includo boost nel mio progetto ricevo un milione di questi avvisi. Qualcuno sa come posso eliminare gli avvisi?
../ dipende \ boost / config / abi_prefix.hpp (19) : avviso C4103: 'Dipende \ spinta \ config \ abi_prefix.hpp' : allineamento modificato dopo l'inclusione header, potrebbe essere dovuto alla mancanza di #pragma pack (pop)
So di poter fare un #pragma per disabilitare l'avviso, ma mi piacerebbe sapere il motivo di questi avvisi.
Soluzione
Il motivo è che boost non inserisce / pop questi pragmi in ogni file che necessita di essere compresso. # Includono un file separato che fa il push (abi_prefix.hpp), e poi un altro (abo_suffix.hp) che fa il pop.
Ciò consente loro di riutilizzare lo stesso codice pacchetto #pragma ovunque, il che è utile in quanto può variare tra i compilatori.
È perfettamente sicuro però. Il push #pragma è seguito da un pop, è appena incluso in un altro file. Quindi dovresti probabilmente disabilitare quell'errore.
Altri suggerimenti
Sì, lo otterresti dalla direttiva #pragma pack in config / abi / msvc_prefix.hpp. Indica che l'imballaggio predefinito del progetto non è 8. È abbastanza insolito, è intenzionale? I bug dovuti alle differenze di imballaggio possono essere un po 'difficili da diagnosticare.
Ho trovato un modo per sbarazzarmi di questo avviso.
Devi modificare il file boost_1 _ ** \ boost \ config \ user.hpp e rimuovere il commento dalla riga con BOOST_DISABLE_ABI_HEADERS
Quindi dovresti definire in questo file:
#define BOOST_DISABLE_ABI_HEADERS
Una volta fatto, basta costruire con bjam come faresti normalmente .
Si prega di vedere i commenti qui sotto per i pericoli di questa soluzione