函数和初始化后换行上的 Clang 格式大括号

问题描述 投票:0回答:2

我使用的是 Clang 格式,配置是不久前完成的。

我注意到变量初始化的样式将大括号与参数保持在同一行,但我希望它在新行上结束(如果参数也已放在新行上)。 这是它的样子:

std::string const long_init{
    "Smartasdasdsadasdasdasdasdasdasdasdasdasdasdasdasdasdasglove"};
    
some_class some_class_var{
    long_arg_name_1, long_arg_name_2, long_arg_name_3, long_arg_name_4};

这就是我想要的样子:

std::string const long_init{
    "Smartasdasdsadasdasdasdasdasdasdasdasdasdasdasdasdasdasglove"
};
    
some_class some_class_var{
    long_arg_name_1, long_arg_name_2, long_arg_name_3, long_arg_name_4
};

我尝试查看文档,但我似乎找不到合适的参数来调整。

有人知道什么设置控制这个吗?

c++ clang-format
2个回答
0
投票

BreakBeforeBraces (BraceBreakingStyle) clang-format 3.7 ¶ 要使用的大括号破坏样式。

可能的值: BS_Attach(在配置中:附加)始终将大括号附加到周围的上下文。

        namespace N {
        enum E {
          E1,
          E2,
        };

        class C {
        public:
          C();
        };

        bool baz(int i) {
          try {
            do {
              switch (i) {
              case 1: {
                foobar();
                break;
              }
              default: {
                break;
              }
              }
            } while (--i);
            return true;
          } catch (...) {
            handleError();
            return false;
          }
        }

        void foo(bool b) {
          if (b) {
            baz(2);
          } else {
            baz(5);
          }
        }

        void bar() { foo(true); }
        } // namespace N

来自文档,希望有帮助:)


0
投票

根据 clang-format 文档:https://clang.llvm.org/docs/ClangFormatStyleOptions.html#alignafteropenbracket

AlignAfterOpenBracket
设置为
BlockIndent
:

AlignAfterOpenBracket: BlockIndent

如果您的代码如下,它似乎不起作用:

VkSubmitInfo submitInfo = {
        .commandBufferCount = 1,
        .pCommandBuffers = &commandBuffer};

只需在结构体的最后一个成员后面添加一个逗号即可:

VkSubmitInfo submitInfo = {
        .commandBufferCount = 1,
        .pCommandBuffers = &commandBuffer,};

然后就可以了:

VkSubmitInfo submitInfo = {
        .commandBufferCount = 1,
        .pCommandBuffers = &commandBuffer,
};
© www.soinside.com 2019 - 2024. All rights reserved.