如何阻止clang格式在=标志后打破?

Tam*_*lei 6 c++ clang-format

我正在使用clang-format和一个相当小的配置文件,我对这些选项并不是很熟悉.为了这个问题,请考虑这段未格式化的代码:

int msgResult = ShowMBox(R_MESSAGE, msgText, MB_OK_ENABLE | MB_CANCEL_ENABLE, MB_STYLE_ERROR);
Run Code Online (Sandbox Code Playgroud)

当我在这个片段上运行clang-format时,我明白了

int msgResult
    = ShowMBox(R_MESSAGE, msgText, MB_OK_ENABLE | MB_CANCEL_ENABLE, MB_STYLE_ERROR);
Run Code Online (Sandbox Code Playgroud)

但我更喜欢

int msgResult = ShowMBox(R_MESSAGE, msgText, MB_OK_ENABLE | MB_CANCEL_ENABLE, 
                         MB_STYLE_ERROR);
Run Code Online (Sandbox Code Playgroud)

有没有办法强制执行不破坏=,或者至少不愿意破坏?

Eri*_*kus 1

我相信您想要这两种风格选择:

BinPackArguments: true
AlignAfterOpenBracket: Align
Run Code Online (Sandbox Code Playgroud)

如果没有BinPackArguments, clang-format 将尝试将所有函数参数放在一行上,或者如果不能,则每行放置一个函数参数。大多数预定义样式已设置BinPackArgumentstrue,但Mozilla样式并未设置。

如果没有AlignAfterOpenBracket设置为Align,clang-format 有时会更愿意将所有参数放在第二行,而不是仅仅将一个与其他参数不对齐的参数放在第二行。大多数预定义样式已设置AlignAfterOpenBracketAlign,但WebKit样式并未设置。

有关这些设置的更多详细信息,请参阅文档。

我的测试是使用 clang-format 6.0.0 完成的。也许您的早期版本不支持所有这些。