我正在使用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,但没找到我可以使用的选项。
答案 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
开关以允许缩进与其周围代码相同的编译指示。