【问题标题】:Automatically indenting pre-processor statements自动缩进预处理器语句
【发布时间】:2013-03-30 22:30:51
【问题描述】:

每个人都使用什么来缩进 C++ 预处理器指令? Astyle 和 Gnu-Ident 似乎无法做到这一点!

我认为 James McNellis 在此线程 (How do you indent preprocessor statements?) 上的回答非常有趣。我已经采用这种风格有一段时间了,如果能够在现有代码上做到这一点,那就太好了。

我刚刚负责维护一系列充满嵌套#IFDEFS/#ELSEIF/#ELSE 的类,每个函数大约有 800 到 1000 行(使得可读性和折叠块非常非常困难)

【问题讨论】:

    标签: c++ indentation code-formatting


    【解决方案1】:

    我们的 C 和 C++ 漂亮打印机将放置良好的条件句视为程序结构的一部分,并相应地缩进它们(及其内容)。这些漂亮的打印机包括完整、精确的 C 和 C++ 解析器;他们不会在重新格式化时破坏您的代码。

    SO 讨厌站外链接;检查我的简历。

    【讨论】:

      【解决方案2】:
      1. egrep -r '^ #' srcdir | perl -ne 'print "$1\n" if /^\s#\s*([^\s]+)/' |排序 -u
      2. 基于代码中存在的预处理器关键字,上面的命令将打印实现一个简单的递归缩进算法,类似于检查对称括号的算法。

      【讨论】:

      • 谢谢博巴! -- 但这可能不会将预处理器指令视为普通的 C++ 块。 James McNellis 的建议以及我看到其他人所做的是将预处理器指令视为一个普通的代码块,它与它当前所在的其余代码块缩进。\n 我想知道修改 astyle 是否可能是唯一的我们有解决方案! -- 从理论上讲,如果样式写得足够好,能够定义如何处理#IFDEF、#ELSEIF、#ELSE 和#END,那么应该很容易。
      猜你喜欢
      • 2016-04-09
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      相关资源
      最近更新 更多