如何让clang-format在__attribute__后强制换行?
让clang-format在函数属性列表后换行的解决方法
问题说明
想要的代码格式:
__attribute__((naked, noreturn)) void _reset(void) { ... }
但clang-format自动格式化后会变成:
__attribute__((naked, noreturn)) void _reset(void) { ... }
尝试过的无效操作:
- 在属性后添加
//,结果格式混乱:
__attribute__((naked, noreturn)) // void _reset(void) { ... }
- 调高
PenaltyReturnTypeOnItsOwnLine配置值,无任何效果 - 仅添加
\会被格式化清除;添加\(反斜杠+空格),结果不符合预期:
__attribute__((naked, noreturn)) \ void _reset(void) { ... }
可行解决方案
方案1:修改clang-format全局配置
在项目的.clang-format配置文件中添加或修改以下项:
BreakAfterAttributes: Always
该配置会强制让函数属性块之后换行,适配LLVM 10及以上版本的clang-format。
方案2:局部禁用格式化
如果不想改动全局规则,可以在目标代码段前后添加格式化禁用标记,强制保留自定义格式:
// clang-format off __attribute__((naked, noreturn)) void _reset(void) { // clang-format on ... }
方案3:利用属性的换行注释技巧
在属性末尾添加特定注释触发换行,无需修改全局配置:
__attribute__((naked, noreturn)) /* clang-format break */ void _reset(void) { ... }
内容的提问来源于stack exchange,提问作者Sun of A beach
相关产品推荐
相关产品推荐

