首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用clang-format缩进预处理器指令

使用clang-format缩进预处理器指令
EN

Stack Overflow用户
提问于 2014-06-29 20:44:31
回答 3查看 8K关注 0票数 39

我正在做一个我使用了很多#pragma omp的c++项目。我使用了非常棒的clang-format来保持整洁,但是它总是删除所有预处理器指令的缩进。有没有办法改变这种行为?或者有没有其他更值得推荐的格式化工具?或者我应该完全避免使用这些工具?

EN

回答 3

Stack Overflow用户

发布于 2018-02-05 00:13:10

从版本6.0开始,可以使用选项IndentPPDirectives。在this review中描述了用法。

使用IndentPPDirectives: None会产生以下结果:

代码语言:javascript
复制
#if FOO
#if BAR
#include <foo>
#endif
#endif

IndentPPDirectives: AfterHash则提供了:

代码语言:javascript
复制
#if FOO
#  if BAR
#    include <foo>
#  endif
#endif

编辑:有关clang-format版本9中引入的BeforeHash选项的详细信息,请参阅@Gabriel Staples的answer

票数 19
EN

Stack Overflow用户

发布于 2017-07-18 14:25:37

虽然已经很晚了,但这就是你正在寻找的解决方案。它将编译指示与代码块一起格式化。你可以在他们最终支持编译指示缩进之前使用它。

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

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

代码语言:javascript
复制
# 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
票数 3
EN

Stack Overflow用户

发布于 2019-11-01 15:04:26

astyle (艺术风格)用开箱即用的代码很好地缩进了#pragma omp。甚至看起来都没有改变行为的选项。只有行连续没有缩进,如示例所示-我更喜欢在omp下缩进行连续,可能是8个空格。其他编译指示左对齐。

代码语言:javascript
复制
void foo()
{
        #pragma omp parallel
#pragma omp master
    {
#pragma omp task depend( some_expression ) \
            depend( other_expression ) \
    priority(1)
        {
            code();
        }
    }

    #pragma other
    code();
}

变成了

代码语言:javascript
复制
void foo()
{
    #pragma omp parallel
    #pragma omp master
    {
        #pragma omp task depend( some_expression ) \
        depend( other_expression ) \
        priority(1)
        {
            code();
        }
    }

#pragma other
    code();
}

有一个Astyle Visual Studio extension

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24476165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档