开发学院

您的位置:首页>教程>正文

教程正文

Protocol Buffer C++实例教程: 扩展Protocol Buffer

  在您发布使用Protocol Buffer的代码后,您迟早会毫无疑问地想要“改进”Protocol Buffer的定义。如果你想让你新的代码向后兼容,让你的旧代码向前兼容:那么你需要在新版本的Protocol Buffer中遵守一些规则:

  •   您不能更改任何现有字段的标签号。

  •   您不得添加或删除任何必填字段。

  •   您可以删除可选或重复的字段。

  •   您可以添加新的可选或重复字段,但必须使用新的标签号(即,从未使用过的标签号,甚至未被删除的字段使用过)。

  (这些规则有一些例外,但很少使用。)

  如果您遵循这些规则,旧代码将愉快地阅读新消息,并简单地忽略任何新字段。对于旧代码,被删除的可选字段将只具有它们的默认值,被删除的重复字段将为空。新代码也会透明地读取旧消息。但是,请记住,新的可选字段不会出现在旧消息中,因此您需要显式检查它们是否设置了has_,或者在您的.proto文件中用[default = value] 标签后提供一个合理的默认值。如果没有为可选元素指定默认值,则使用特定于类型的默认值:对于字符串,默认值为空字符串。对于布尔值,默认值为false。对于数值类型,默认值为零。还要注意,如果您添加了一个新的重复字段,您的新代码将无法判断它是空的(由新代码)还是根本没有设置(由旧代码),因为它没有has_ flag。