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

syv*_*vex 33 c c++ clang c++11 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
};
Run Code Online (Sandbox Code Playgroud)

比以下更具可读性:

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
};
Run Code Online (Sandbox Code Playgroud)

我意识到clang-format总是这样做可能不太实际,但是当代码已经像所说的代码一样手动格式化时,clang-format将格式保留在适当位置会很好.

Mic*_*son 13

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

来自文档

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

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

(原文如此)

  • 这实际上不适用于预处理器宏.我目前正在尝试将其添加为单独的选项,请参阅此分支上的最新提交https://github.com/eriknyquist/clang/tree/align_defines (3认同)
  • @syvex,你有什么特别要做的吗?我得到'错误:未知密钥'AlignConsecutiveAssignments' (2认同)
  • 埃里克斯有没有承诺过它的叮当声?荒谬的是,他们没有对齐宏的选项。为什么审核和接受需要这么长时间? (2认同)