You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

clang-format中#endif后尾随注释格式异常的解决方法

clang-format配置:让#endif后的尾随注释仅保留2个空格

问题场景

原始C代码:

#ifdef __UCOSII__

#define SCANCODE_HKEY1  SCANCODE_F1 ///< Horizontal key 1
#define SCANCODE_HKEY2  SCANCODE_F2 ///< Horizontal key 2
#define SCANCODE_HKEY3  SCANCODE_F3 ///< Horizontal key 4

#define SCANCODE_VKEY1  SCANCODE_1 ///< Vertical key 1
#define SCANCODE_VKEY2  SCANCODE_2 ///< Vertical key 2
#define SCANCODE_VKEY3  SCANCODE_3 ///< Vertical key 3

#endif  // __UCOSII__

使用的clang-format配置片段:

...
MaxEmptyLinesToKeep: 2
SpacesBeforeTrailingComments: 2
AlignTrailingComments:
  Kind: Always
  OverEmptyLines: 1
...

格式化后,宏定义的注释对齐正常,但#endif后的尾随注释被自动对齐到与宏注释同一列,不符合仅保留2个空格的需求:

#ifdef __UCOSII__

#define SCANCODE_HKEY1  SCANCODE_F1  ///< Horizontal key 1
#define SCANCODE_HKEY2  SCANCODE_F2  ///< Horizontal key 2
#define SCANCODE_HKEY3  SCANCODE_F3  ///< Horizontal key 4

#define SCANCODE_VKEY1  SCANCODE_1   ///< Vertical key 1
#define SCANCODE_VKEY2  SCANCODE_2   ///< Vertical key 2
#define SCANCODE_VKEY3  SCANCODE_3   ///< Vertical key 3

#endif                               // __UCOSII__

解决方案

只需在.clang-format配置中添加PPTrailingCommentAlignment: false选项即可实现需求。

说明

  • PPTrailingCommentAlignment默认值为true,会让预处理指令(如#endif、#ifdef)的尾随注释参与全局对齐;
  • 设置为false后,预处理指令的尾随注释将不再对齐,而是遵循SpacesBeforeTrailingComments指定的空格数。

修改后的配置片段

...
MaxEmptyLinesToKeep: 2
SpacesBeforeTrailingComments: 2
AlignTrailingComments:
  Kind: Always
  OverEmptyLines: 1
PPTrailingCommentAlignment: false
...

格式化后的效果

#ifdef __UCOSII__

#define SCANCODE_HKEY1  SCANCODE_F1  ///< Horizontal key 1
#define SCANCODE_HKEY2  SCANCODE_F2  ///< Horizontal key 2
#define SCANCODE_HKEY3  SCANCODE_F3  ///< Horizontal key 4

#define SCANCODE_VKEY1  SCANCODE_1   ///< Vertical key 1
#define SCANCODE_VKEY2  SCANCODE_2   ///< Vertical key 2
#define SCANCODE_VKEY3  SCANCODE_3   ///< Vertical key 3

#endif  // __UCOSII__

这样既保留了宏定义注释的对齐效果,又让#endif后的注释仅保留2个空格。

内容的提问来源于stack exchange,提问作者XiaoLey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:35:01