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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top