質問
プロジェクトにブーストを含めると、これらの警告が何百万も表示されます。誰も私が警告を取り除く方法を知っていますか?
../ depends \ boost / config / abi_prefix.hpp(19) :警告C4103: 'depends \ boost \ config \ abi_prefix.hpp' :含めた後に配置が変更されました ヘッダー。#pragmaが欠落している可能性があります pack(pop)
警告を無効にするために#pragmaを実行できることは知っていますが、これらの警告の理由を知りたいです。
解決
ブーストは、データをパックする必要があるすべてのファイルでこれらのプラグマをプッシュ/ポップしないためです。プッシュを行う個別のファイル(abi_prefix.hpp)を#includeし、その後ポップを行う別のファイル(abo_suffix.hp)を含めます。
これにより、どこでも同じ#pragma packコードを再利用できます。これは、コンパイラによって異なる可能性があるため便利です。
しかし、完全に安全です。 #pragma pushの後にポップが続き、別のファイルからインクルードされます。したがって、おそらくそのエラーを無効にする必要があります。
他のヒント
はい、config / abi / msvc_prefix.hppの#pragma packディレクティブから取得できます。プロジェクトのデフォルトのパッキングが8ではないことを示しています。これはかなり珍しいことです。これは意図的なものですか?パッキングの違いによるバグは、診断が少し難しい場合があります。
この警告を取り除く方法を見つけました。
ファイルboost_1 _ ** \ boost \ config \ user.hppを編集し、BOOST_DISABLE_ABI_HEADERSの行のコメントを解除する必要があります
したがって、このファイルで定義する必要があります:
#define BOOST_DISABLE_ABI_HEADERS
完了したら、通常のbjamでビルドする。
このソリューションの危険性については、以下のコメントをご覧ください