clang-format能为我调整一块#defines吗?

时间:2016-07-27 17:53:48

标签: c++ c clang-format

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

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

所有值都很好地对齐。不幸的是,clang-format会这样做;

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

我找到了AlignConsecutiveDeclarations和AlignConsecutiveAssignments选项,但没有任何可以对齐连续的#defines。有可能这样做吗?

4 个答案:

答案 0 :(得分:5)

奇怪的是,此功能尚未在clang中实现;当前缺少连续宏的格式设置选项。

许多开发人员都感兴趣,并且有一个工作请求请求已经等待批准多年:https://reviews.llvm.org/D28462?id=93341

您可以集成它,也可以等待他们是否将其添加到官方分支中,但是在这一点上,我怀疑它们是否会实现。

答案 1 :(得分:1)

快速浏览style options,看起来目前没有选项。处理预处理的唯一选项是build.gradle,它处理 if (isset($_POST['cart_product'])) { $id = "&PRODUCTID=" . $_POST['cart_product']; // uses the input name from the button } 块的缩进。

答案 2 :(得分:0)

我也找不到任何选择。 Clang删除了我所有已由emacs自动对齐的定义。

答案 3 :(得分:-1)

请注意,clang-format-9及更高版本具有AlignConsecutiveMacros: true选项,可以为您解决问题。

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

例如,如果您具有Ubuntu 16.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。