c++ - 如何让 clang 格式在 << 和 >> 上中断
问题描述
如何让 clang-format 打破 '<<' 和 '>>' 运算符?
我尝试将 BreakBeforeBinaryOperators 设置为 All,但这在这里似乎没有任何区别。
我希望我的代码格式如下:
in >> a
>> b
>> c;
代替
in >> a >> b >> c;
解决方案
为此,您需要两种样式设置:
BreakBeforeBinaryOperators: All
ColumnLimit: 0
或者,将样式设置为预定义WebKit
样式,这将为您设置这两种样式设置。
文档说:
列限制为 0 表示没有列限制。在这种情况下,clang-format 将尊重语句中输入的换行决定,除非它们与其他规则相矛盾。
这不是一个很好的解决方案,原因如下:
正如文档所说,clang-format 将尊重您开始使用的换行符。但如果它们不存在,它不会添加换行符。所以一条线
in >> a >> b >> c;
不会被分成不同的线。输出不会
>>
将第一行的 与>>
后续行的 对齐。它只是按通常的续行数量缩进。例如,如果你的正常缩进是 4,你会得到:in >> a >> b >> c;
这实际上有点奇怪,因为如果运算符是
<<
,clang-format 会将所有三个运算符排成一行。您可能并且可能确实想要
ColumnLimit
设置为 80 之类的其他值,以便其他行在合理的位置中断。
但这似乎是使用 clang 格式可以做到的最好的。
我使用 clang-format 6.0.0 进行了测试,但我相信较新的版本会起到类似的作用,而且我没有看到任何看起来会有所帮助的新样式选项。
推荐阅读
- powerquery - Power Query 的 Text.Format 格式字符串
- javascript - 音频根本不加载,因为找不到支持的源
- firebase - 是否可以在 Flutter Web 应用程序中使用 Firebase 管理 SDK?
- javascript - React-Hook-Form 和 ReactJS 组件验证
- flutter - 如何将 Flutter GetXController 永久放入内存?
- opencv - 是否可以删除相机框架但仍继续在命令提示符控制台中检测?
- django - AWS 托管的 django 站点的 SSL 证书和 https
- reactjs - 如何在反应中实现进度条?
- android - Cordova 文件插件不适用于 android sdk 30
- sql - POSTGRESQL 按一个字段排序后按一个字段过滤