clang-format的SpacesBeforeTrailingComments对/*注释*/未生效问题咨询
clang-format SpacesBeforeTrailingComments 对/*尾随注释不生效的问题
问题重现
配置.clang-format里的SpacesBeforeTrailingComments: 2后,//类型的尾随注释能正常强制2个前置空格,但/* ... */的尾随注释只会被格式化成1个前置空格,不符合预期:
我的.clang-format配置片段
# .clang-format style file ... SpacesBeforeTrailingComments: 2
格式化后的代码结果
int x; // comment enforced to SpacesBeforeTrailingComments == 2 int y; /* comment enforced to SpacesBeforeTrailingComments == 1 */
原因
这是clang-format的默认设计——SpacesBeforeTrailingComments只负责控制单行//注释的前置空格数,而作为尾随注释的/* ... */块注释,clang-format默认只留1个前置空格,不受这个配置项影响。
解决办法
如果想让尾随的块注释也用2个前置空格,目前没有直接对应的配置项,有两个可行方向:
- 统一改用
//单行注释:只要项目允许,把尾随的块注释换成单行注释,就能直接套用SpacesBeforeTrailingComments: 2的规则。 - 自定义clang-format逻辑:如果必须保留块注释格式,得修改clang-format源码里对块注释前置空格的处理逻辑,或者自定义Style,但这种方式成本高,只适合特殊需求场景。
内容的提问来源于stack exchange,提问作者Yair
相关产品推荐
相关产品推荐

