首页 > 解决方案 > 如何让 Clang 格式允许自定义换行?

问题描述

我在使用 clang-format 时遇到问题。

有时,我想以自定义方式换行。例如,我想格式化以下代码。

gParticleList = (ParticleType*) mmap(NULL, sizeof(ParticleType) * gGridNum, \
PROT_READ | PROT_WRITE, MAP_SHARED, 0, 0);

预期的结果是这样的:

gParticleList = (ParticleType*)mmap(NULL, sizeof(ParticleType) * gGridNum, \
                                    PROT_READ | PROT_WRITE, MAP_SHARED, 0, 0);

\是我自己手动添加的。我希望 clang 接受我自己定义的换行符。

但是,clang-format 总是格式化 delete my \,并给出如下代码:

gParticleList =
        (ParticleType*)mmap(NULL, sizeof(ParticleType) * gGridNum, PROT_READ | PROT_WRITE, MAP_SHARED, 0, 0);

我知道我可以使用一些宏禁用 clang-format。但我想学习一些更好的方法来满足我的需要。

标签: clang-format

解决方案


这里有几个想法:

  1. // clang-format off通过将代码放在代码之前和代码之后,完全禁用代码周围的格式设置// clang-format on。这很不方便,但可以让您完全手动控制代码的格式。

  2. 有时在你想要的地方强制换行就足够了。//您可以通过在要换行的地方放置一个空注释来做到这一点。Clang 格式可能会更改缩进和间距,但不会将注释移动到不同的行,也不会将代码从注释的一侧移动到另一侧。在上面的示例中,您将用\空注释替换 your 。


推荐阅读