Apache Thrift 中的“注释”是什么?它的用途是什么?

BCG*_*BCG 4 thrift

Thrift 解析器有一个“注释”的定义:

https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob;f=compiler/cpp/src/thrifty.yy;h=da5c562f9d7adf87b21e4c3ae30fbb9657e0c8b3;hb=HEAD#l85

它们的用途是什么?它们包含的信息可以在生成的客户端和/或服务器代码中访问吗?

小智 5

注释用于将元数据与 Thrift 定义(“.thrift”)文件中定义的类型相关联。源发行版中的文件有示例。AnnotationThrift.test

例如,这里是struct带有注释的(在括号中):

struct foo {
  1: i32 bar ( presence = "required" );
  2: i32 baz ( presence = "manual", cpp.use_pointer = "", );
  3: i32 qux;
  4: i32 bop;
} (
  cpp.type = "DenseFoo",
  python.type = "DenseFoo",
  java.final = "",
  annotation.without.value,
)
Run Code Online (Sandbox Code Playgroud)

查看代码,注释似乎仅用于向编译器提供指令 - 例如,C++ 编译器使用注释cpp.type(如果存在)来覆盖生成代码中的类型名称。

我没有看到任何迹象表明注释本身在生成的代码中被复制或可访问,尽管如果这样的代码确实存在,它将位于compiler/cpp/src/generate/.