Configuration (预处理器宏)

MSGPACK_USE_BOOST (since 1.2.0)

Default value: not defined.

msgpack-c 支持 boost 容器。参见 https://github.com/msgpack/msgpack-c/tree/master/include/msgpack/adaptor/boost 使用这些适配器时,需要定义 MSGPACK_USE_BOOST。适配器需要 Boost 库。

MSGPACK_USE_DEFINE_MAP (since 1.2.0)

Default value: not defined.

定义 MSGPACK_USE_DEFINE_MAP 时,MSGPACK_DEFINE 别名为 MSGPACK_DEFINE_MAP,MSGPACK_BASE 别名为 MSGPACK_BASE_MAP。

如果未定义 MSGPACK_USE_DEFINE_MAP,则 MSGPACK_DEFINE 别名为 MSGPACK_DEFINE_ARRAY,MSGPACK_BASE 别名为 MSGPACK_BASE_ARRAY。

有关更多详细信息,请参阅 侵入式方法(intrusive approach)

MSGPACK_USE_LEGACY_NIL (since 1.4.0)

Default value: not defined

msgpack::type::nil 被替换为 msgpack::type::nil_t 以避免 #408 冲突。

nil 由系统在某些环境中定义。参见#368#406

msgpack::type::nil 已过时。您需要将 msgpack::type::nil 替换为 msgpack::type::nil_t。

但是,如果您想继续使用 nil,请定义 MSGPACK_USE_LEGACY_NIL。当你这样做时,msgpack::type::nil 被定义为 msgpack::type::nil_t 的 typedef。

MSGPACK_USE_LEGACY_NAME_AS_FLOAT

Default value: not defined.

根据 msgpack 格式,支持 IEE 754 单精度或双精度浮点数:https://github.com/msgpack/msgpack/blob/master/spec.md#float-format-family

msgpack-c 提供了访问浮点格式系列的 API。

使用 msgpack::object 时,类型数据成员在 C++ 中为 msgpack::type::FLOAT,在 C 中为 MSGPACK_OBJECT_FLOAT。联合字段名称为“f64”。然而,它们在旧版本的 msgpack-c 中使用了不同的名称。

old name new name
msgpack::type::DOUBLE msgpack::type::FLOAT
MSGPACK_OBJECT_DOUBLE MSGPACK_OBJECT_FLOAT
dec f64
当您定义宏 MSGPACK_USE_LEGACY_NAME_AS_FLOAT 时,旧名称和新名称都可用。否则只有新名称可用。

请参阅以下提交:https://github.com/msgpack/msgpack-c/commit/737e6703df2cad06cfb16e3e0e34a02ec5212c38

MSGPACK_USE_CPP03

Default value: not defined.

msgpack 自动检测 C++ 版本(C11 或 C03)。如果定义 MSGPACK_USE_CPP03,msgpack 使用 C03,即使编译器设置为使用 C11。
Use C++03:

g++ -std=c++03 test.cpp
g++ -std=c++11 -DMSGPACK_USE_CPP03 test.cpp

Use C++11:

g++ -std=c++11 test.cpp

MSGPACK_EMBED_STACK_SIZE

Default value: 32.

当 msgpack 格式的字节流包含复合数据时,它会包含 …(N 次)数组。

C++

在 C++ 中,解包上下文堆栈被实现为 std::vector。 MSGPACK_EMBED_STACK_SIZE 提示复合级别。

msgpack 在使用 std::vector 时保留 MSGPACK_EMBED_STACK_SIZE。如果 msgpack 格式字节流包含多于 MSGPACK_EMBED_STACK_SIZE 元素,则扩展 std::vector。您可以设置复合级别的限制。请参阅元素的限制大小

C

在 C 中,一堆解包上下文被实现为一个数组。 MSGPACK_EMBED_STACK_SIZE 表示复合级别的限制。如果 N >= MSGPACK_EMBED_STACK_SIZE 解包函数将返回解析错误。

configuration (cmake)

MSGPACK_BUILD_EXAMPLES

Default value: ON

Build examples or not.

MSGPACK_BUILD_TESTS

Default value: If gtest is found then ON, otherwise OFF.

Build tests or not.

MSGPACK_GEN_COVERAGE

Default value: OFF

Generate coverage or not.

MSGPACK_CXX11 (C++ only)

Default value: OFF

Use C++11 or not.

MSGPACK_CXX17 (C++ only)

Default value: OFF

Use C++17 or not.

Q.E.D.