首页 > 解决方案 > astyle:在成员中使用运算符时 C 结构初始化程序的错误缩进

问题描述

我正在尝试设置 astyle 以在提交到存储库之前自动格式化代码。到目前为止,我已经配置了我想要的样式参数,并且几乎所有东西都按我想要的方式工作。但是结构初始化有问题。当我在成员中使用运算符进行初始化时,生成的 astyle 缩进与我期望的不匹配。例如,以下代码片段初始化struct test. 第一个缩进正确,但第二个b成员缩进了额外的制表符:

struct test {
    unsigned char a;
    unsigned char b;
};

static struct test test1_var = {
    .a = 125,
    .b = 0
};

static struct test test2_var = {
    .a = 1000 >> 8,
            .b = 1000 & 0xFF
};

我用来格式化文件的样式选项是:

    --style=linux \
    --indent=force-tab=8 \
    --pad-comma \
    --unpad-paren \
    --add-braces \
    --max-code-length=120 \
    --attach-return-type \
    --pad-oper \
    --pad-header \
    --align-pointer=name \
    --indent-after-parens \
    --indent-continuation=2

如果我设置--indent-continuation=0,变量test2_var会正确缩进,但这会在很多其他地方破坏缩进。

这里的问题是:为什么将结构初始化test2_var视为延续(对于b成员),但test1_var不是?有没有办法让test2_var缩进的方式与test1_var不必删除我已经设置的任何样式参数相同?

标签: castyle

解决方案


推荐阅读