【发布时间】:2026-01-24 13:00:02
【问题描述】:
我正在使用 clang-format(版本 3.5)和 Emacs(版本 24.5.2)。这是一段由clang-format 以LLVM 风格格式化的简单代码:
int main() {
std::cout << "> ";
std::string word;
while (std::cin >> word) {
std::cout << std::accumulate(word.cbegin(), word.cend(), 0,
[](int cur, char ch) {
return cur + (ch - '0');
}) << std::endl << "> ";
}
return 0;
}
注意它是如何对齐 lambda 的主体和右大括号的。这种格式是否有任何逻辑,或者只是缺乏对lambdas 的支持?我需要设置clang-format 的配置参数以获得更好的格式吗?
【问题讨论】:
-
我想说很容易识别 lambda 主体以及
accumulate()函数的结束位置。我相信 clang-format 在源文件上也使用 80 列宽。你会如何格式化它? -
@NathanOliver 这里最大列是 66,所以空间很大。我将从
return开始,缩进到[]的右侧,并将右大括号与[]对齐。 -
我认为它想将第三个参数(lambda)与第一个参数对齐,同时将 lambda 的末尾(累积将要运行的代码的末尾)与 std:: 对齐积累。这对我来说有点道理,但我会把
{换行
标签: c++ c++11 emacs lambda clang-format