Question

Chaque fois que j'introduis boost dans mon projet, je reçois un million de ces avertissements. Est-ce que quelqu'un sait comment je peux me débarrasser des avertissements?

  

../ depend \ boost / config / abi_prefix.hpp (19)   : avertissement C4103:   'dépend de \ boost \ config \ abi_prefix.hpp'   : alignement modifié après avoir inclus   en-tête, peut-être dû à l'absence de #pragma   pack (pop)

Je sais que je peux faire un #pragma pour désactiver l'avertissement, mais j'aimerais connaître la raison de ces avertissements.

Était-ce utile?

La solution

La raison en est que boost n’affiche pas ces pragmas dans tous les fichiers nécessitant le compactage des données. Ils incluent un fichier séparé qui effectue le push (abi_prefix.hpp), puis un autre fichier (abo_suffix.hp) qui effectue ensuite le pop.

Cela leur permet de réutiliser le même code #pragma pack partout, ce qui est pratique car il peut varier d’un compilateur à un autre.

Mais c'est parfaitement sûr. Le push #pragma est suivi d'un pop, il est simplement inclus à partir d'un fichier différent. Donc, vous devriez probablement simplement désactiver cette erreur.

Autres conseils

Oui, vous obtiendrez cela de la directive #pragma pack dans config / abi / msvc_prefix.hpp. Cela indique que l'emballage par défaut de votre projet n'est pas 8. C'est assez inhabituel, est-ce intentionnel? Les bugs dus aux différences de conditionnement peuvent être un peu difficiles à diagnostiquer.

J'ai trouvé un moyen de me débarrasser de cet avertissement.

Vous devez éditer le fichier boost_1 _ ** \ boost \ config \ user.hpp et décommenter la ligne avec BOOST_DISABLE_ABI_HEADERS

Vous devriez donc définir dans ce fichier:

#define BOOST_DISABLE_ABI_HEADERS

Une fois cela fait, il vous suffit de construire avec bjam comme vous le feriez normalement .

Consultez les commentaires ci-dessous pour connaître les dangers de cette solution

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top