我怎么能使用clang格式缩进C ++编译指示?

时间:2015-07-11 05:24:19

标签: c++ coding-style clang-format

我正在使用vim-autoformat,它使用clang-format作为外部格式化程序。

似乎clang-format不会缩进C ++ #pragma。例如:

#include <omp.h>
#include <cstdio>
int main()
{
#pragma omp parallel for
    for (int i = 0; i < 10; ++i)
    {
        puts("demo");
    }
    return 0;
}

我想将其格式化为:

#include <omp.h>
#include <cstdio>
int main()
{
    #pragma omp parallel for
    for (int i = 0; i < 10; ++i)
    {
        puts("demo");
    }
    return 0;
}

我查了clangformat,但没找到我可以使用的选项。

2 个答案:

答案 0 :(得分:2)

已经很晚了,但这是你正在寻找的解决方案。 它将编译指示与代码块一起格式化。

https://github.com/MedicineYeh/p-clang-format

主要概念是替换字符串,以便格式化程序使用&#34;更正&#34;这些pragma的规则。动机的例子如下。

# Replace "#pragma omp" by "//#pragma omp"
sed -i 's/#pragma omp/\/\/#pragma omp/g' ./main.c
# Do format
clang-format ./main.c
# Replace "// *#pragma omp" by "#pragma omp"
sed -i 's/\/\/ *#pragma omp/#pragma omp/g' ./main.c

答案 1 :(得分:1)

它有点晚了,但 clang-format 最终计划使任何变通办法变得不必要。 https://reviews.llvm.org/D92753 引入了布尔 IndentPragmas 开关以允许缩进与其周围代码相同的编译指示。