사용자 정의 구조체를 직렬화 할 수 있다는 것이 유용하다는 것을 알게되었습니다. 나는 보통 다음과 같은 것을 사용합니다.C++에서 Msgpack으로 컴파일 시간을 줄이는 방법은 무엇입니까?
#include <msgpack.hpp>
struct MyStruct {
int val;
MSGPACK_DEFINE_MAP(val);
};
다음은 필요한 곳에 포함될 것입니다. 나는 나중에 긴 컴파일 시간을 알아 차렸다. g ++을 -H 플래그와 함께 실행했을 때, 포함 된 파일 중 1/3 정도가 msgpack과 관련이 있음을 발견했습니다.
헤더가 어디서나 재사용되고 컴파일 시간이 늘어나는 것을 피하면서 쉽게 msgpack을 사용할 수 있습니까?
미리 컴파일 된 헤더는 대개 큰 헤더에 대한 대답입니다. 적은 수의 번역 단위에서 msgpack만을 사용하고 ODR 위반으로 인해 정의되지 않은 동작에 대해별로 신경 쓰지 않으면 #ifdef 매크로와 msgpack include를 사용할 수 있습니다. – PeterT
미리 컴파일 된 헤더에 소용돌이 줄 것입니다. 나는 .. msgpack을 필요로하는 모든 빌드 타겟은 USE_MSGPACK과 같은 플래그를 정의 할 것이고, 나는이 ifdef를 모든 곳에 가지고있을 것인가? – sardine
msgpack을 클래스 정의 내에서 사용해야하는 경우 msgpack을 사용하지 마십시오. .cpp 파일에서 사용할 수있는 것을 찾으십시오. – o11c