c++ - 如果有换行符,clang-format 将不会附加大括号
问题描述
我遇到了关于 clang 格式的问题:
我要强制执行的是块开头的大括号始终附加到函数头/控制序列...
这意味着,而不是
int f()
{
return 1;
}
或者
if(o < 1)
{
return -1;
}
clang-format
应始终像这样连接开口大括号:
int f() {
return 1;
}
和
if(o < 1) {
return -1;
}
if
虽然这适用于第一种情况(函数头和大括号之间没有换行符),但如果函数头 /等之间有换行符,它就不起作用。
我没有找到任何可以clang-format
强制执行此操作的选项。最接近我正在寻找的选项是BreakBeforeBraces: Attach
,但这也没有正确格式化第二种情况。玩弄这个选项以及下面的选项BraceWrapping
也没有解决问题。有没有办法配置clang-format
加入行,例如左括号总是在它们之前的最后一行代码的末尾结束?
我玩过https://clangformat.com/或http://cf.monofraps.net/等在线配置器,但找不到满足我需求的选项集。
我目前正在使用 clang-format 版本 3.8 。
解决方案
你可以使用:
MaxEmptyLinesToKeep: 0
这将导致空行被删除,然后大括号将按照您请求的方式进行格式化。
但是,我希望这对您来说并不是一个很好的解决方案,因为它会删除所有空行,而不仅仅是大括号前的空行。
除此之外,我认为使用 clang-format 6.0.0 是不可能的。我认为它也没有添加到较新的版本中 -文档中似乎没有任何内容与此相关。
推荐阅读
- php - UTF-8 转换问题
- php - Laravel 7.0 中不允许序列化“闭包”
- sql - oracle 使用时间戳列跟踪表上的历史记录
- c++ - 为什么 std::uniform_real_distribution 不会生成正确的浮点值?
- laravel - 在 laravel 7 中使用 postgres 数据库中的列表值创建一个下拉列表,并从同一数据库中插入另一个文本字段
- jenkins - 在 Kubernetes 上扩展 Jenkins-slave
- spring-boot - 创建 javax.sql.DataSource 并指定使用的模式
- reactjs - 用玩笑模拟小吃店
- node.js - ExpressJS 和 Apache:子路由不起作用
- python-3.x - pythin REST API 烧瓶