c++ - RawStringFormats 和 Delimeters 'pb' 在 clang 格式中的含义

标签 c++ clang-format

我无法理解以下内容如何影响 clang 格式文件中的格式化行为:

RawStringFormats: 
  - Delimiters:       [pb]
    Language:        TextProto
    BasedOnStyle:    google
这些设置对于 C++ 项目是否正确? (例如,语言不应该是 cpp 吗?)
分隔符的“pb”是什么意思,它与“cc”和“cpp”有什么不同?
我试图在 clang 文档中查找信息,但这只会增加我的困惑。

最佳答案

[pb]作为分隔符,代表 ProtocolBuffers或简称 Protobuf。 RawStringFormat格式化选项专门用作检测和格式化文件中显示为原始字符串的代码片段的提示(对于支持的语言);它使用 DelimitersEnclosingFunctions使用指定的格式样式检测和重新格式化它们。
如果您希望将格式应用于文件中的原始字符串,它甚至在 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/

相关文章:

objective-c - clang-format 是否识别新的 NS_CLOSED_ENUM Objective-C 宏?

c++ - 继承类中对运算符 << 的 undefined reference

c++ - 为什么微软的strcpy支持重叠复制,会带来潜在的泄露风险?

c++ - node.js 插件如何检查参数类型

c++ - 格式化foreach宏的格式与使用clang-format的循环相同

c++ - 如何让 clang-format 的c++ long for循环分成三行?

c++ - 括号对齐样式 : Break before closing parenthesis

c++ - 在没有读取权限的情况下返回大小文件c++

c++ - 在哪里放置用于(例如)std::sort 的比较函数?

c++ - 'if' 、 'while' 、 'catch' 等之后的空间。使用 clang 格式