Boost 序列化版本控制是如何工作的?

How does Boost Serialization Versioning work?

谁能给我解释一下 Boost Serialization 中的版本控制是如何工作的。存档版本始终为 10,class 版本为 0。我认为当存档与上一个版本不同时版本会自动递增。如果我改了什么,我必须自己定义版本号吗?

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE boost_serialization>
<boost_serialization signature="serialization::archive" version="10">
    <EventSet class_id="0" tracking_level="0" version="0">
        <Size>1</Size>
        <Event>
        ...
        </Event>
    </EventSet>
</boost_serialization>

Boost 文档中没有描述,但行 boost_serialization signature="serialization::archive" version="10" 对应于 Boost.Archive 库的版本,它有时会在新版本的 Boost 可用时发生变化。

如文档所述,EventSet class_id="0" tracking_level="0" version="0" 行对应于 class 版本。您可以在代码中使用宏 'BOOST_CLASS_VERSION(EventSet, 1)' 更改它。