emk*_*emk 6 c++ formatting coding-style indentation curly-braces
我们希望使我们的C++大括号样式更加一致.现在,我们的代码包含以下内容:
if (cond)
{
// ...
}
else
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
...和:
if (cond) {
// ...
} else {
// ...
}
Run Code Online (Sandbox Code Playgroud)
我们想要专门使用后一种风格.
但是,我们不希望改变我们的代码的缩进.我尝试过使用astyle,bcpp,GNU indent和Uncrustify(我看过GreatCode的命令行选项).不幸的是,这些工具中的每一个都坚持重新定义我们的代码,并且大多数工具都非常糟糕地破坏了C++构造函数初始化程序列表和预处理程序宏.
是否有任何C++代码美化器可以修复大括号而只留下缩进?它不一定是一个预先存在的工具 - 如果你知道如何使用一些疯狂的Perl单线程,这也很好.谢谢!
更新:是的,我们知道这将使得难以读取旧代码的差异.这是一个长期推迟的代码清理,我们已经确定一致格式化的日常优势超过任何版本控制困难.
这是一个Perl单行程,可以做你想要的.
perl -pi.bak -e 'BEGIN { undef $/; } s/\s*?(\s?\/\/.*)?\r?\n\s*{/ {\1/g; s/}(\s?\/\/.*)?\r?\n\s*else\b(.*)/} else\2\1/g;'
Run Code Online (Sandbox Code Playgroud)
它变成了这样:
int main(int argc, char *argv[])
{
int something = 0;
if (something) // 5-12-2007
{
printf("Hi!\n");
}
else // 5-13-2007
{
printf("Bye\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
进入这个:
int main(int argc, char *argv[]) {
int something = 0;
if (something) { // 5-12-2007
printf("Hi!\n");
} else { // 5-13-2007
printf("Bye\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)