vscode 利用.clang-format 格式化C代码--连续宏定义和条件编译格式对齐

最近在做项目时碰到一个需求,将多个板子的头文件定义合并,并整理其格式,大概内容像下面这样:

#if defined board_1

#define A 00//注释
#define B 11//              注释
//注释
#define CCCC        22//注释

#define DDDD 33
//注释
#endif



#if defined board_2
//注释
#define EEEEEEEEEEEEE           22 // 注释
/*
 * 块注释
 */
#define     FFFFFFFF        33            // 注释
#define     GG        4455
/****************************/
#endif

在头文件中,有许多的空行,块注释和行注释,以及条件定义语句,宏的长度也不固定。调整格式时希望能够将所有的注释位置对齐,将所有宏的值和定义也对齐,在clang-format中,支持连续的宏对齐,并且可以定义为跨空行和跨注释对齐。只需要调整clang-format的以下参数为:

# 宏对齐
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
# 对齐连续的尾随的注释
AlignTrailingComments:	true
# 连续空行的最大数量
MaxEmptyLinesToKeep:	1
# 在尾随的评论前添加的空格数(只适用于//)
SpacesBeforeTrailingComments:	1

设置完成后,保存clang-format,在vscode中选中代码,CTRL-K CTRL-F 就可以将宏和注释以及多余的空行取消掉了,格式化后的结果如下:

#if defined board_1

#define A    00 //注释
#define B    11 //注释
//注释
#define CCCC 22 //注释

#define DDDD 33
//注释
#endif

#if defined board_2
//注释
#define EEEEEEEEEEEEE 22 // 注释
/*
 * 块注释
 */
#define FFFFFFFF      33 // 注释
#define GG            4455
/****************************/
#endif

格式化代码后发现,并没有达到完全理想的效果,代码块被条件定义语句分隔开了,查找了很多资料,没有找到解决的办法,最后想了一个笨办法:
在格式化前用一个特定的字符串 将条件定义语句替换为注释语句,我这里是将#if 替换为//if,将#endif 替换为//endif,完成替换后,重新格式化。

//if defined board_1

#define A             00 //注释
#define B             11 //注释
//注释
#define CCCC          22 //注释

#define DDDD          33
//注释
//endif

//if defined board_2
//注释
#define EEEEEEEEEEEEE 22 // 注释
/*
 * 块注释
 */
#define FFFFFFFF      33 // 注释
#define GG            4455
/****************************/
//endif

最后再将#if 和#endif替换回去,就可以了

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VSCode是一个开源的轻量级代码编辑器,而Clang-Format是一个用于格式化C、C++和Objective-C代码的工具。它们可以配合使用,以提高代码的规范性和可读性。 要正确匹配VSCode版本和Clang-Format插件,首先需要确保VSCodeClang-Format插件都是最新版本,以获得最佳的兼容性和稳定性。 在VSCode中安装Clang-Format插件非常简单。首先,打开VSCode编辑器,然后点击左侧的“扩展”图标。在搜索栏中输入“Clang-Format”,找到Clang-Format插件并点击“安装”按钮进行安装。安装完成后,点击“启用”按钮激活插件。 一旦Clang-Format插件安装完成并激活,你可以通过以下步骤配置插件: 1. 打开VSCode的设置菜单,选择“首选项” > “设置”。 2. 点击右上角的“打开设置(json)”按钮,打开设置文件。 3. 在设置文件中,你可以配置Clang-Format的选项。例如,你可以设置格式化的样式、缩进的大小等。你还可以指定Clang-Format的配置文件路径,以便更具体地定义格式化规则。 4. 保存设置文件并关闭。 现在,当你在VSCode编辑器中打开C、C++或Objective-C代码文件时,你可以使用快捷键或右键菜单中的选项来应用Clang-Format插件。选择适当的选项后,Clang-Format格式化代码,并应用你在设置文件中定义的规则。 总之,VSCodeClang-Format插件可以很好地匹配使用,以提供高质量的代码格式化和规范化。通过安装最新版本的VSCodeClang-Format插件,并正确配置插件选项,你可以获得更好的代码编写体验。 ### 回答2: VSCode是一款广受欢迎的集成开发环境(IDE),拥有丰富的扩展功能,可以帮助开发者提高工作效率。而Clang-Format是一个用于代码格式化的插件,可以帮助开发者在编写代码时保持统一的代码风格。 VSCode的版本与Clang-Format插件的匹配需要确保两者之间的兼容性。通常来说,VSCode版本与插件的匹配主要受两方面的影响:VSCode本身的功能和插件的兼容性。 首先,VSCode的版本需要满足一定的功能要求,以支持Clang-Format插件的运行。对于较新的VSCode版本,通常会包含丰富的API和功能,提供了更好的扩展性和兼容性,能够更好地支持插件的运行。 其次,插件本身需要兼容当前使用的Clang-Format工具版本。Clang-Format是由Clang项目开发的一款代码格式化工具,用于统一代码的风格。该工具会不断进行更新和发布新的版本,不同的版本可能会存在一些差异和兼容性问题。因此,在选择Clang-Format插件时,需要确保该插件的兼容性覆盖了当前使用的Clang-Format工具版本。 总而言之,为了保持VSCode版本与Clang-Format插件的匹配,我们需要选择适用于当前VSCode版本的Clang-Format插件,并确保该插件的兼容性覆盖了所使用的Clang-Format工具版本。这样,我们就能够在编写代码时,通过Clang-Format插件实现代码的统一格式化,提高代码的可读性和维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值