clang-format可以对齐列中的变量或宏分配吗?

时间:2014-11-24 17:51:47

标签: c++ c c++11 clang clang-format

是否可以在列中使用clang-format对齐变量赋值?例如:

int someInteger             = 42;
std::string someString      = "string";
const unsigned someUnsigned = 42;

#define SOME_INTEGER        42
#define SOME_STRING_LITERAL "string"
#define SOME_CONSTANT       42

enum Enum {
    ONE   = 1,
    TWO   = 2,
    THREE = 3,
    FOUR  = 4,
    FIVE  = 5,
    SIX   = 6,
    SEVEN = 7
};

比以下内容更具可读性:

int someInteger = 42;
const unsigned someUnsigned = 42;
std::string someString = "string";

#define SOME_INTEGER 42
#define SOME_STRING_LITERAL "string"
#define SOME_CONSTANT 42

enum Enum {
    ONE = 1,
    TWO = 2,
    THREE = 3,
    FOUR = 4,
    FIVE = 5,
    SIX = 6,
    SEVEN = 7
};

我意识到clang-format总是这样做可能不太实际,但是当代码已经像所说的代码一样手动格式化时,clang格式就可以保留格式。

5 个答案:

答案 0 :(得分:12)

看起来3.7支持这样的东西(尚未测试)。

来自docs

  

AlignConsecutiveAssignments(bool)
  如果为true,则对齐连续分配。

     

这将对齐连续行的赋值运算符。这将导致格式化,如代码int aaaa = 12; int b = 23; int ccc = 23; endcode

(原文如此)

答案 1 :(得分:3)

Clang-format没有任何选项可以做到这一点。

如果您想告诉clang-format单独保留某些行,您可以使用// clang-format off// clang-format on条评论来完成此操作。

答案 2 :(得分:1)

我使用https://github.com/mattga/ClangFormat-Xcode/tree/clang_3.7测试了它,它是支持3.7的ClangFormat-Xcode的分支。

我可以格式化a = 9999;按选项

按需要键入列表
  

AlignConsecutiveAssignments = true

。但定义并未一致。 是否有迹象表明它们是一致的?

答案 3 :(得分:1)

对于宏:似乎在释放lang 10时,您可以通过向您添加AlignConsecutiveMacros: true .clang-format

来完成此操作。

https://reviews.llvm.org/D28462

答案 4 :(得分:0)

您可以使用以下选项:AlignConsecutiveMacros:true 参考:https://clang.llvm.org/docs/ClangFormatStyleOptions.html 支持llvm版本:> = 10.0