GNU 缩进:它是否支持 C++

GNU indent: does it support C++

我用 indent 格式化了我的 C 代码,效果很好。

现在我正在使用 C++,但我仍然想使用缩进。但是,我发现它不能很好地支持 class 声明。这是一个例子:

class Test
{
public:
    Test ();
    void ttt ();
protected:
    virtual void func ();
};

这是一个名为test.h的头文件,使用这样的缩进后:export VERSION_CONTROL=never; indent -bli0 -blf -bls -nbfda -npsl -i4 -ts4 test.h,它变成如下:

class Test
{
  public:
        Test ();
        void ttt ();
  protected:
          virtual void func ();
};

如您所见,在publicprotected之前,添加了两个空格并且virtual vodi func();根本没有对齐。

所以缩进不支持 C++?

不,GNU indent 不支持 C++。

引用 GNU indent manual 的第 1.12 节:

While an attempt was made to get indent working for C++, it will not do a good job on any C++ source except the very simplest.

GNU indent 提供 非常C++ 代码的有限支持,

但是 clang-format 将支持 C++ 和其他 langauges/code,例如 C/Java/JavaScript/JSON/Objective-C/Protobuf/C#