我经常使用Xcode - 用于跨平台项目。有时候,当我按下Cmd-A Ctrl-I(自动缩进所有内容)时,在遇到如下行之后会出现错误缩进:
std::cout << something;
而不是:
if(some_condition()) {
std::cout << something;
}
other_things();
它会这样做:
if(some_condition()) {
std::cout << something;
}
other_things();
我无法找到任何关于何时会犯错的一致性,因此提供MCSE并非易事。
我找到了一个解决方法(作为答案提供)但是如果有更好的方式我很想知道!
非常感谢。
答案 0 :(得分:0)
自动格式化程序中的混淆似乎与解释程序有关,将x << y
视为没有左侧的表达式,当然如果x
除了ostream
之外的其他内容{1}}。
如果替换它,格式化错误就会消失:
if(some_condition()) {
std::cout << something;
}
用这个:
if(some_condition()) {
auto& os = std::cout << something;
// but note we now get a warning about an unused variable
}
或者这个:
if(some_condition()) {
void(std::cout << something);
// deliberately discard the returned ostream&
}
两者都不漂亮,两者都可能促使未来的维护者(特别是如果他们使用netbeans,codeblocks,vi,emacs或eclipse)想知道我的意图究竟是什么。
答案 1 :(得分:0)
我总是这样做,这让我很开心。
首先做Cmd + A
然后做Cmd + [比如5-10次
然后我按Ctrl + I,每次都缩进。