我无法理解以下内容如何影响 clang 格式文件中的格式化行为:
RawStringFormats:
- Delimiters: [pb]
Language: TextProto
BasedOnStyle: google
这些设置对于 C++ 项目是否正确? (例如,语言不应该是 cpp 吗?)分隔符的“pb”是什么意思,它与“cc”和“cpp”有什么不同?
我试图在 clang 文档中查找信息,但这只会增加我的困惑。
最佳答案
[pb]
作为分隔符,代表 ProtocolBuffers或简称 Protobuf。 RawStringFormat
格式化选项专门用作检测和格式化文件中显示为原始字符串的代码片段的提示(对于支持的语言);它使用 Delimiters
或 EnclosingFunctions
使用指定的格式样式检测和重新格式化它们。
如果您希望将格式应用于文件中的原始字符串,它甚至在 C++ 项目中也很有用。例如,使用 protobuf 输入和输出的 C++ 项目通常具有如下所示的测试代码:
InputProto ConstructInput() {
InputProto input;
Input *in = input.mutable_input();
in->set_id(10);
in->set_name("Test");
return in;
}
TEST(TestFoo, ComputesOut) {
OutputProto out;
out.set_result(200);
EXPECT_THAT(
GetOutput(ConstructInput()),
EqualsProto(outcome));
}
Protobuf 允许您使用文本格式以更易读的方式编写相同的内容,如下所示:TEST(TestFoo, ComputesOut) {
EXPECT_THAT(
GetOutput(PARSE_TEXT_PROTO(R"pb(
input {
id: 10
name: "Test"
}
)")),
EqualsProto(PARSE_TEXT_PROTO(R"pb(
result: 200
)"))
);
}
您的格式选项将检测 pb
中的文本字符串。分隔符作为 protobuf 代码并使用 google
重新格式化它格式样式。
关于c++ - RawStringFormats 和 Delimeters 'pb' 在 clang 格式中的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66628814/