ユーザー定義の構造体をシリアル化できると便利だと分かっています。私は通常次のようなものを使用しますC++でMsgpackを使用してコンパイル時間を短縮するにはどうすればよいですか?
#include <msgpack.hpp>
struct MyStruct {
int val;
MSGPACK_DEFINE_MAP(val);
};
これは必要な場所に含まれています。私は後で長いコンパイル時に気づいた。 g ++に-Hフラグを指定して実行すると、インクルードされたファイルの約1/3がmsgpackに関連していることがわかりました。
ヘッダーがどこにでも組み込まれてコンパイル時間が長くなるのを避けながら、簡単にmsgpackを使用する方法はありますか?
通常、コンパイル済みヘッダーは大きなヘッダーの答えです。少数の翻訳単位でのみmsgpackを使用し、ODR違反のため未定義の動作についてはあまり気にしない場合は、#ifdefマクロとmsgpackインクルードを使用できます。 – PeterT
私はあらかじめコンパイルされたヘッダーに渦を付けます。 私は..だから、msgpackを必要とするすべてのビルドターゲットはUSE_MSGPACKのようなフラグを定義し、これらのifdefをどこにでも持っていますか? – sardine
msgpackをクラス定義内で使用する必要がある場合は、msgpackを絶対に避けてください。 .cppファイルで使用できるものを探します。 – o11c