35

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

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-format 将格式保留在适当的位置会很好。

4

5 回答 5

16

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

文档

AlignConsecutiveAssignments (bool)
如果为真,对齐连续的赋值。

这将对齐连续行的赋值运算符。这将导致像 code int aaaa = 12; 这样的格式。诠释 b = 23; int ccc = 23; 端码

(原文如此)

于 2015-06-16T04:18:41.050 回答
3

Clang-format 没有任何选项可以执行此操作。

// clang-format off如果您想告诉 clang-format 保留某些行,您可以使用和// clang-format on注释来做到这一点。

于 2014-11-24T18:02:12.423 回答
1

对于宏:看起来您将能够在发布 clang 10 后通过添加AlignConsecutiveMacros: true到您来完成此操作.clang-format

https://reviews.llvm.org/D28462

于 2019-08-15T07:43:49.943 回答
1

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

我可以格式化 a = 9999; 按选项键入我想要的列表

AlignConsecutiveAssignments = true

. 但定义不一致。是否有任何迹象可以对齐它们?

于 2015-08-08T02:49:01.423 回答
0

你可以使用这个选项:AlignConsecutiveMacros: true ref: https://clang.llvm.org/docs/ClangFormatStyleOptions.html 支持 llvm 版本:>=10.0

于 2020-05-29T02:04:48.743 回答