foreach宏的格式与clang格式的循环相同
Format foreach macros the same as loops with clang-format
我有一个类似于BOOST_FOREACH
的foreach
风格的宏,我希望其格式类似于以下内容:
int bar(int a) { return ++a; }
int bar(int a) {
a += 2;
return ++a;
}
int foo(std::vector<int> a) {
BOOST_FOREACH (auto i, a) {
++i;
}
for (auto &i : a) {
++i;
}
BOOST_FOREACH (auto i, a) {
++i;
i += 2;
}
for (auto &i : a) {
++i;
i += 2;
}
}
问题是,我使用的LLVM样式作为基础:
BOOST_FOREACH (auto i, a) { ++i; }
BOOST_FOREACH (auto i, a) {
++i;
i += 2;
}
即将短/单行foreach
宏循环体放在单行上,尽管它不对正常的for
循环这样做。
我找不到一个clang-format
选项。以下是我尝试过的,从LLVM风格作为基础开始:
BreakBeforeBraces: Custom
BraceWrapping:
AfterControlStatement: true
给出:
BOOST_FOREACH (auto i, a)
{ ++i; }
for (auto &i : a)
{
++i;
}
看起来可能是个虫子?
BreakBeforeBraces: Custom
BraceWrapping:
AfterFunction: true
这几乎是我想要的,但它显然也会影响我不想要的功能:
int foo(std::vector<int> a)
{
BOOST_FOREACH (auto i, a) {
++i;
}
...
放置
AllowShortFunctionsOnASingleLine: false
只影响一行bar
,而不影响foreach
宏,所以我不认为这是因为clang-format
将宏视为函数定义。
我是遗漏了什么,还是这可能是clang-format
中的错误?
我认为您没有遗漏任何内容。我同意它看起来像是clang-format
中的一个bug。
格式化BOOST_FOREACH
循环时,AfterControlStatement
设置无法正常工作,AfterFunction
会影响它,但实际上不应该。对我来说,ForEachMacros
设置根本不起作用,这可能是问题的一部分(当我从每个宏的列表中删除BOOST_FOREACH
时,行为是相同的(。
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- 如何在openssl-ecc中获取十六进制格式的私钥
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 为什么我的for循环不能正确获取argv
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 视觉 如何循环访问C++中遵循类似格式的多个.txt文件?
- C++ 我的开关格式中的循环不允许我显示菜单选项或接受输入?
- 如何让clang格式的c++长循环变成三行
- foreach宏的格式与clang格式的循环相同
- 如何在 c++ 中从".in"格式的文件中获取输入?此代码进入无限循环,但适用于".txt"文件格式
- c++格式在while循环期间冻结