.proto文件中的单独声明可以使用多个选项进行注释。 选项不会更改声明的整体含义,但可能会影响其在特定上下文中的处理方式。 可用选项的完整列表在google/protobuf/descriptor.proto中定义。也就是说不同的选项可能只在编译某种语言时才会生效

一些选项是文件级选项,这意味着它们应该写在顶级作用域中,而不是在任何消息,枚举或服务定义内。 一些选项是消息级选项,这意味着它们应该写入消息定义内。 一些选项是字段级选项,这意味着它们应该写在字段定义中。 枚举类型,枚举值,服务类型和服务方式也可以选择选项。 然而,目前没有任何有用的选项

以下是一些最常用的选项:

文件选项

  • java_package:这个选项可以在编译成java类代码是设置类名
option java_package = "com.example.foo";复制代码
  • java_multiple_files:Causes top-level messages, enums, and services to be defined at the package level, rather than inside an outer class named after the .proto file.(有合适的理解请评论留言~)
option java_multiple_files = true;复制代码
  • java_outer_classname : 要生成的最外层Java类的类名(因此是文件名)。 如果在.proto文件中没有指定明确的java_outer_classname,则通过将.proto文件名转换为camel-case来构造类名称(因此foo_bar.proto变为FooBar.java)。 如果不生成Java代码,则此选项不起作用。
option java_outer_classname = "Ponycopter";复制代码
  • optimize_for:可以设置为SPEED,CODE_SIZE或LITE_RUNTIME。 这将影响C ++和Java代码生成器(以及可能的第三方生成器),方法如下:

    • SPEED (default): 高效的方式编译
    • CODE_SIZE:生成的代码类最少,生成的总代码量也小,但是操作速度会变慢
    • LITE_RUNTIME:编译器将会使用一个轻量的库,但是也会少一些功能,一般用在受限的平台上(比如:手机)。编译器仍将像SPEED模式一样生成所有方法的快速实现。 生成的类只会在每个语言中实现MessageLite接口,该接口仅提供完整Message接口的方法的一部分。
option optimize_for = CODE_SIZE;复制代码
  • cc_enable_arenas:生成c++代码时开启arena alloction
  • objc_class_prefix:设置生成的Objective-C代码的前缀

字段选项

  • deprecated:标记以后,表示该字段已经弃用,不应该在新代码中使用,未来可能要替换掉
int32 old_field = 6 [deprecated=true];复制代码

Protocol Buffers 学习(6):文件 | 字段选项介绍相关推荐

  1. 转 Nmon 监控生成数据文件字段的介绍

    ##发现nomon 一个好用的功能 数据透视图 PIVOTCHART:这些参数被用来构建数据透视图.所需的参数:Sheetname,PageField,rowfield,columnfield,Dat ...

  2. FlatBuffers vs Protocol Buffers

    FlatBuffers去年发布,最近看了一下,与同是出自Google之手的Protocol Buffers非常类似.在官网上介绍,FlatBuffers(简称FB)主要针对game developme ...

  3. Protocol Buffers 编码原理

    转载地址:https://zhuanlan.zhihu.com/p/73549334 当今云时代 gRPC 大行其道,gRPC 默认的序列化编码 Protocol Buffers 也跟着流行开来.都说 ...

  4. protocol buffers 序列化数据

    一. protocol buffers 是什么? Protocol buffers 是一种语言中立,平台无关,可扩展的序列化数据的格式,可用于通信协议,数据存储等. Protocol buffers ...

  5. Google Protocol Buffers介绍

    Google Protocol Buffers(简称Protobuf),是Google的一个开源项目,它是一种结构化数据存储格式,是Google公司内部的混合语言数据标准,是一个用来序列化(将对象的状 ...

  6. Linux学习笔记 文件服务Vsftp详细介绍

    Linux学习笔记 文件服务Vsftp详细介绍 知识点: 1.FTP使用TCP连接和TCP端口 2.在进行通信时,FTP需要建立两个TCP连接: 一个用于控制信息,TCP端口号缺省为21 一个用于数据 ...

  7. 「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析

    「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析 前言 一.我的开发环境 二.使用 Vue CLI (Vue 脚手架)快速搭建项目 三.初始项目的目录结构 ...

  8. 十九.激光和惯导LIO-SLAM框架学习之项目工程代码介绍---代码框架和一些文件解释

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  9. riak教程 java_Riak学习(2):java连接Riak服务,使用Protocol Buffers连接

    1,介绍 Riak服务搭建,可以参考: http://blog.csdn.net/freewebsys/article/details/12609995 Riak的接口访问有两种方式: HTTP Pr ...

最新文章

  1. python函数的基础知识_Python入门基础知识点(函数进阶)
  2. 使用Leangoo玩转故事地图
  3. hexo的next主题个性化教程 打造炫酷网站
  4. HDU2227(非降子序列的个数)
  5. Linux API函数总结
  6. Sklearn——Sklearn的介绍与安装
  7. 增加限制模拟器2006-2-11
  8. spark shuffle流程入门
  9. 74HC595引脚图时序图工作原理及pdf中文资料lsh
  10. DXGI中的flip显示模型
  11. Synonyms 中文近义词工具包 -- 支持文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等
  12. BIP47 (支付码)
  13. 漂泊在汉语视界中的蒙古歌者
  14. C#编程, FTP文件上传、下载、重命名公共类
  15. 5G承载网,到底有哪些关键技术?
  16. 关于显卡PCIE3.0 X16 X8 X4 X1速度的测试
  17. 什么是 Benchmarks?
  18. python 微信公众号接口中文乱码问题
  19. Windows操作系统发展简史【图】
  20. 初入Java测试员之路

热门文章

  1. matlab读取高光谱影像
  2. 为什么工具监测不出内存泄漏
  3. leetcode:Majority Number
  4. js function随笔
  5. Android开发学习笔记-GridView的动态显示
  6. vim快捷键使用记录
  7. 微软计划Windows 7 SP2开发
  8. django 使用requests请求相关接口
  9. Python学习笔记之列表(一)
  10. 面对挫折:给即将或已经遭受社会毒打的每一个人