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

Ala*_*aya 12 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;
}
Run Code Online (Sandbox Code Playgroud)

我想把它格式化为:

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

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

Med*_*Yeh 5

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

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

主要概念是替换字符串,以便格式化程序在这些编译指示上使用“正确”的规则。动机示例如下。

# 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
Run Code Online (Sandbox Code Playgroud)