编程风格-如何使用clang-format缩进c++ pragma

coding style - How could I indent C++ pragma using clang-format?

本文关键字:缩进 c++ pragma clang-format 何使用 风格 编程      更新时间:2023-10-16

我使用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;
}

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

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

主要概念是替换字符串,以便格式化程序在这些pragmas上使用"正确"的规则。激励的例子如下:

# 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

这甚至有点晚,但clang-format最终计划使任何变通不必要。https://reviews.llvm.org/D92753引入了布尔值IndentPragmas开关,以允许与周围代码相同的缩进pragmas