告诉clang-format忽略pragma指令

11

目前clang-format会将所有的#pragma移到第一列。以下是clang-format之前的一个例子:

for (int i = 0; i < 4; ++i) {
  #pragma UNROLL
  // ...some code...
}

clang-format后的相同代码:

for (int i = 0; i < 4; ++i) {
#pragma UNROLL
  // ...some code...
}

有没有一种方法可以让clang-format完全忽略#pragma行,而不改变源代码(即不用在源代码中添加// clang-format off)?例如使用正则表达式?
这与此问题相关(我想避免安装第三方工具),并且希望通过此错误报告得到解决。

此外,虽然clang-format off会被用于带有编译指示的那一行,但是该注释行本身仍将缩进到与编译指示相同的缩进位置(在clang-format 6.0.0中):

for (int i = 0; i < 4; ++i) {
// clang-format off
  #pragma UNROLL
  // clang-format on
  // ...some code...
}
1个回答

0
如果你只使用了少量的编译指示,你可以尝试将它们伪装成普通命令。根据编译器探索器的说法,以下方法对编译器有正确的影响,同时不会被clang-format破坏。
另一个好处是,你可以根据编译器使用不同的定义(如这个问题所述)。
#define UNROLL _Pragma("unroll")

void f()
{
    volatile int x = 0;
    UNROLL for (int i = 0; i < 100; ++i)
    {
        x = x + i;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接