c++ 告诉clang-format忽略杂注

nkhmeac6  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(160)

clang-format当前将所有杂注移动到第一列。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完全忽略杂注行而不改变源代码(即而不使源与// clang-format off混杂)?例如使用正则表达式?
这与this question有关(我希望避免installing a third-party tool),希望通过this bug report解决。
此外,虽然clang-format off对于包含pragma的行是有效的,但注解行 * 本身 * 将缩进到pragma * 应该缩进到的位置 *(使用clang-format 6.0.0):

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

nbewdwxp

nbewdwxp1#

如果您使用的杂注很少,那么可以尝试将它们伪装成常规命令。根据compiler explorer,以下内容对编译器有正确的效果,而格式不会被clang-format破坏。
另一个好处是,您可以根据编译器使用不同的定义(如this question)。

#define UNROLL _Pragma("unroll")

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

字符串

相关问题