叮当格式在单行上链接其他 ifs
Clang Format chained else ifs on single lines
我正在尝试编写一个 .clang 格式的文件,该文件将允许以下内容:
if (value.Is<bool>()) { index = 1; }
else if (value.Is<int>()) { index = 2; }
else if (value.Is<unsigned int>()) { index = 3; }
else if (value.Is<long long>()) { index = 4; }
else if (value.Is<unsigned long long>()) { index = 5; }
else if (value.Is<float>()) { index = 6; }
else if (value.Is<double>()) { index = 7; }
else if (value.Is<long double>()) { index = 8; }
else if (value.Is<std::string>()) { index = 9; }
else if (value.IsArray()) { index = 10; }
else { index = 0; }
我已经尝试了我能找到的与中断和 allowShort* 相关的所有选项,无论我做什么,似乎都会在第一个之后将它们分成多行,如下所示:
if (value.Is<bool>()) { index = 1; }
else if (value.Is<int>()) {
index = 2;
}
...
我缺少一些可以支持这一点的选项吗?
不幸的是,if-else 语句目前不支持此功能,仅适用于简单的 if(截至修订版 329373,日期为 6/4/18(。AllowShortBlocksOnASingleLine
和AllowShortIfStatementsOnASingleLine
选项不适用于 if-else 语句。
希望这种情况将来会改变。
文档对此没有明确说明,说AllowShortIfStatementsOnASingleLine
将允许在一行上显示简单的 if 语句:
AllowShortIfStatementOnASingleLine (bool(
如果为 true,则可以将if (a) return;
放在一行上。
但是,clang格式代码表明if-else块不允许在单行上:
1( UnwrappedLineFormatter.cpp,tryMergeSimpleControlStatement:
// Only inline simple if's (no nested if or else).
if (I + 2 != E && Line.startsWith(tok::kw_if) &&
I[2]->First->is(tok::kw_else))
return 0;
2(格式测试.cpp,格式短括号语句测试。
请注意测试参数,并且在 unittests 的预期格式中,else 始终驻留在自己的行中,而没有 else 的纯 if 语句与其块位于一行上,例如:
verifyFormat("if (true) {n"
" f();n"
"} else {n"
" f();n"
"}",
AllowSimpleBracedStatements);
https://clang.llvm.org/docs/ClangFormatStyleOptions.html 说:
SIS_AllIfsAndElse(在配置中:AllIfsAndElse(始终将短 ifs、else>ifs 和 else 语句放在同一行上。
if (a) return;
if (b) return;
else return;
if (c) return;
else {
return;
}
2023 年 7 月: 我还在寻找一种解决方案,以保留单行 if-else 语句,并将表达式括在括号中。添加以下配置对我有用。
AllowShortBlocksOnASingleLine: Always
文档:https://clang.llvm.org/docs/ClangFormatStyleOptions.html
文档指出"while (true) { continue; }
可以放在一行上",但我发现它也适用于if (condition) { expr(); }
。
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 使用 CMake 与其他静态库链接的静态库 - 一个有效,一个无效。为什么?
- 使用 pybind11 构建库,链接其他共享库
- 当其他链接库链接 stdc++ 为动态时,如何将 libstdc++ 链接设置为静态?
- 可视C++ - 从链接器>输入>其他依赖项中排除文件
- 叮当格式在单行上链接其他 ifs
- 如何链接由CMAKE在其他目录上生成的库
- 仅一个功能的链接错误.在同一类和CPP文件中具有相似签名的其他函数工作正常
- 如何将GCC中的静态库与其他动态库链接
- 如何链接一个使用其他库的静态C库
- D3D9 Direct3DCreate9() 链接器错误,但所有其他 D3D 函数都有效
- 为什么需要双指针来更改头部,而不是链接列表中的其他地方
- C 链接列表仅输出其他每个元素
- GTEST测试项目链接链接到其他可执行文件
- 为什么我需要将 -lstdc++ 添加到我的其他链接器标志中
- 在C++中,我们如何将插入运算符和其他运算符链接在一起
- 与其他库链接的静态库-LINKER警告
- C链接程序并在主函数上使用其他程序的方法(数独)
- 如何在动态链接其他库时静态链接 libgomp
- GCC 链接器:静态 A 在链接其他共享库时看不到静态 B