在预处理器指令之后定义哪个 clang 格式的字段不缩进?

which field in clang-format to define not to indent after preprocessor directive?

提问人:Bryant 提问时间:3/27/2023 最后编辑:Bryant 更新时间:4/5/2023 访问量:178

问:

应用 CLANG-Format 后的当前代码为:

#ifndef CEEDLING_TEST
static
#endif
    void
    Measurement(const uint16_t *buff)
{
    g_rmsValue1ms = Get1msRmsValue(buff);

    g_rmsValue60ms = MovingAvgFilter(&g_MaFilter, g_rmsValue1ms);
}

预期:

#ifndef CEEDLING_TEST
static
#endif
void Measurement(const uint16_t *buff)
{
    g_rmsValue1ms = Get1msRmsValue(buff);

    g_rmsValue60ms = MovingAvgFilter(&g_MaFilter, g_rmsValue1ms);
}

有人知道使用哪个参数来定义这样的行为吗?

clang-format 预处理器指令

评论

0赞 Vojtěch Chvojka 4/5/2023
你能分享你的clang格式配置吗(见选项)?--dump-config

答:

0赞 Vojtěch Chvojka 4/5/2023 #1

我不知道 clang-format 选项。

我建议对你的代码进行一些小的改动。您可以使用宏来代替关键字,该宏决定函数是否为静态函数。这不仅解决了 clang 格式的问题,而且还可能为您节省大量时间。#ifdefstatic#ifdef#ifdef CEEDLING_TEST#endif

#ifdef CEEDLING_TEST
#define MY_STATIC
#else
#define MY_STATIC static
#endif

MY_STATIC
void Measurement(const uint16_t* buff)
{
    g_rmsValue1ms = Get1msRmsValue(buff);
    g_rmsValue60ms = MovingAvgFilter(&g_MaFilter, g_rmsValue1ms);
}

评论

0赞 Bryant 4/7/2023
谢谢你,你的解决方法解决了我的问题。我检查了我的 Clang 格式配置,没有像 --dump-config 这样的选项。
0赞 Vojtěch Chvojka 4/19/2023
@Bryant 如果我的回答解决了你的问题,最好的方式是接受我的回答而不是写评论。:)此外,该选项是从命令行传递到的。诸如此类。如果通过,它将打印您的完整配置以进行格式化。当提出像您这样的问题时,此输出非常有用。您可以查看 中可用的选项。--dump-configclang-formatclang-format --dump-configclang-format --help