Der Versuch loswerden eine c zu bekommen ++ Boost-Warnung
Frage
Jedes Mal, wenn ich Schub in meinem Projekt gehören erhalte ich eine Million dieser Warnungen. Wer weiß, wie kann ich die Warnungen loswerden?
../ hängt \ boost / config / abi_prefix.hpp (19) : Warnung C4103: 'Hängt \ boost \ config \ abi_prefix.hpp' : Ausrichtung änderte sich nach einschließlich Header, kann aufgrund fehlenden Pragma sein Pack (pop)
Ich weiß, ich kann eine Pragma tun, um die Warnung zu deaktivieren, aber ich mag den Grund für diese Warnungen kennen.
Lösung
Der Grund dafür ist, dass boost nicht / nicht schieben diese Pragmas in jeder Datei Pop, die gepackten Daten werden muss. Sie # include eine separate Datei, die funktioniert die Push (abi_prefix.hpp) und dann eine andere (abo_suffix.hp) danach, das tut das Pop.
Das erlaubt ihnen den gleichen #pragma pack Code überall wiederverwendet werden, was praktisch ist, da es zwischen Compiler variieren kann.
Es ist allerdings vollkommen sicher. Der Pragma Push wird von einem Pop gefolgt, es ist nur aus einer anderen Datei enthält. So sollten Sie wahrscheinlich deaktivieren nur diesen Fehler.
Andere Tipps
Ja, würden Sie, dass aus der #pragma pack Richtlinie in config / abi / msvc_prefix.hpp bekommen. Es zeigt an, dass Standard-Verpackung des Projektes nicht 8. Das ist ziemlich ungewöhnlich ist, ist dies beabsichtigt? Bugs wegen der unterschiedlichen Verpackung kann ein bisschen schwierig zu diagnostizieren sein.
Ich fand einen Weg, diese Warnung zu entfernen.
Sie müssen die Datei boost_1 _ ** \ boost \ config \ user.hpp und Kommentar- die Zeile mit BOOST_DISABLE_ABI_HEADERS bearbeiten
So sollten Sie in dieser Datei sein definieren:
#define BOOST_DISABLE_ABI_HEADERS
Sobald dies geschehen ist, nur mit bjam bauen, wie Sie normalerweise würden .
siehe Kommentare unten für Gefahren dieser Lösung