我发现能够序列化用户定义的结构很有用。我通常使用类似如何用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