可以clang格式为我对齐一个#defines块

Can clang-format align a block of #defines for me?

本文关键字:一个 #defines 格式 clang 对齐 可以      更新时间:2023-10-16

我有一个源文件,其中包含这样的行;

#define ARC_V2_LP_START         0x002
#define ARC_V2_LP_END           0x003
#define ARC_V2_STATUS32         0x00a

所有值都很好地对齐。不幸的是,clang格式做到了这一点;

#define ARC_V2_LP_START 0x002
#define ARC_V2_LP_END 0x003
#define ARC_V2_STATUS32 0x00a

我找到了AlignConsecutiveDeclarations和AlignConsumeriveAssignments选项,但没有任何可以对齐连续#定义的选项。有可能做到这一点吗?

[UPDATE]

op的pull请求终于通过了,并且从clang版本9.0.0开始生效。该功能由AlignConsecutiveMacros: true选项启用。

[原件]

奇怪的是,这个特性还没有在clang中实现;当前缺少连续宏的格式化选项。

许多开发人员对此感兴趣,有一个正在工作的拉取请求已经等待批准多年:https://reviews.llvm.org/D28462?id=93341

你可以整合它,或者只是等待他们是否将其添加到官方分支,但在这一点上,我怀疑他们是否会。

快速浏览样式选项,目前似乎没有此选项。我看到的唯一处理预处理的选项是IndentPPDirectives,它处理#if块的缩进。

我也找不到任何选项。Clang已经破坏了我所有由emacs自动对齐的定义。。

请注意,clang-format-9及以上版本有一个AlignConsecutiveMacros: true选项,它可以帮你完成任务。

要在ubuntu/Debian上安装clang-format-9,需要检查http://apt.llvm.org/

举个例子,如果你有Ubuntu16.04/xenial,你需要做以下操作:

sudo sh -c 'echo "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list'
sudo sh -c 'echo "deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main" >> /etc/apt/sources.list'
sudo apt update
sudo apt install clang-format-9

可以用同样的方式处理Trusty/Ubuntu 14.04。