【问题标题】:How to let Clang-format allow custom new line?如何让 Clang 格式允许自定义换行?
【发布时间】:2020-11-20 11:31:23
【问题描述】:

我在使用 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 总是格式化删除我的\,并给出这样的代码:

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

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

【问题讨论】:

    标签: clang-format


    【解决方案1】:

    这里有几个想法:

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

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

    【讨论】:

    • 谢谢,它运作良好。但是代码让我对空的 cmets 有点不舒服...
    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多