我發現能夠序列化用戶定義的結構很有用。我通常使用類似如何用C++中的Msgpack減少編譯時間?
#include <msgpack.hpp>
struct MyStruct {
int val;
MSGPACK_DEFINE_MAP(val);
};
這隨後會在任何地方需要它包括在內。後來我注意到編譯時間很長。當我用-H標誌運行g ++時,發現大約1/3的包含文件與msgpack相關。
是否有任何方法可以輕鬆使用msgpack,同時避免頭文件被重新包含在任何地方,並且膨脹編譯時間?
預編譯頭文件通常是大頭文件的答案。如果您僅在少量翻譯單元中使用msgpack,並且由於ODR違規而不關心未定義的行爲,則可以#ifdef宏和msgpack包含。 – PeterT
我會給予預編譯的標題一個旋轉。 我明白了......所以所有需要msgpack的構建目標都會定義一些像USE_MSGPACK的標誌,並且我會將這些ifdef的任何地方都放在一起? – sardine
如果必須在類定義中使用msgpack,則不惜一切代價避免msgpack。尋找可以在.cpp文件中使用的東西。 – o11c