为什么MsgPack键的类型是MsgPack\u object?

为什么MsgPack键的类型是MsgPack\u object?,c,msgpack,C,Msgpack,在MsgPack的C API中,为什么键(例如MsgPack_object_kv的键字段)是MsgPack_object类型 为什么它们不只是msgpack\u object\u raw?它们可以是任何类型吗?它们可以是任何类型吗 对。这正是键被表示为msgpack\u对象的原因 如果查看,可以看到映射由N=映射内的对数定义,其中: 奇数元素是键,键的下一个元素是其关联值 因此,您可以自由使用任何类型的对象作为关键点 下面是一个来自test/msgpackc_test.cpp的示例(带有由2对

在MsgPack的C API中,为什么键(例如MsgPack_object_kv的键字段)是MsgPack_object类型

为什么它们不只是msgpack\u object\u raw?它们可以是任何类型吗?

它们可以是任何类型吗

对。这正是键被表示为
msgpack\u对象的原因

如果查看,可以看到映射由
N
=映射内的对数定义,其中:

奇数元素是键,键的下一个元素是其关联值

因此,您可以自由使用任何类型的对象作为关键点

下面是一个来自
test/msgpackc_test.cpp
的示例(带有由2对组成的映射):

unsigned int map_size = 2;
/* ... */
msgpack_pack_map(&pk, map_size);
msgpack_pack_true(&pk);
msgpack_pack_false(&pk);
msgpack_pack_int(&pk, 10);
msgpack_pack_int(&pk, -10);
如您所见,第一个键是
MSGPACK\u OBJECT\u BOOLEAN
,第二个键是
MSGPACK\u OBJECT\u POSITIVE\u INTEGER