我们希望使我们的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单线程,这也很好.谢谢!
更新:是的,我们知道这将使得难以读取旧代码的差异.这是一个长期推迟的代码清理,我们已经确定一致格式化的日常优势超过任何版本控制困难.
我想知道为什么Java数组声明使用大括号而不是标准括号.如图所示.我想这可能需要进一步了解大括号,但这具体到我的议程上.
Object[] tableHeaders = {"Cars","Trucks","Tacos"};
Run Code Online (Sandbox Code Playgroud)
这是正确的,而不是.
Object[] tableHeaders = ("Cars","Trucks","Tacos");
Run Code Online (Sandbox Code Playgroud) 我们的低级日志记录库必须处理发送给它的各种日志消息.
其中一些消息包括花括号(作为文本的一部分),有些包含使用String.Format格式化为字符串一部分的参数
例如,此字符串可以是Logger类的输入:
"参数:{Hostname}值:{0}"使用发送的正确变量用于格式化程序.
为了正确地做到这一点,我必须逃避不属于格式化的花括号(通过将它们加倍).
我想过用Regex做这件事,但是这并不像看起来那么简单,因为我不知道如何在花括号内部匹配这些字符串(String.Format未用于格式化目的).
另一个问题是Logger类应尽可能提高性能,开始处理正则表达式,因为其操作的一部分可能会妨碍性能.
有没有适当的和已知的最佳做法?
我正在经历一个代码库,遇到了一个我有疑问的问题.这是我以前从未见过的东西,我想知道是否有人可以为我解释.这是代码:
$variableName = $array[1];
$variableName{0} = strtolower($variableName{0});
$this->property = $variableName;
Run Code Online (Sandbox Code Playgroud)
用于什么花括号?我以前用花括号将变量定义为变量名,但这是一回事吗?我似乎无法在网上找到解释它的任何资源,但我不确定我是否正在寻找合适的东西.
下面的代码
getSpareBuffer :: Handle__ -> IO (BufferMode, CharBuffer)
getSpareBuffer Handle__{haCharBuffer=ref,
haBuffers=spare_ref,
haBufferMode=mode}
= do
case mode of
NoBuffering -> return (mode, error "no buffer!")
_ -> do
bufs <- readIORef spare_ref
buf <- readIORef ref
case bufs of
BufferListCons b rest -> do
writeIORef spare_ref rest
return ( mode, emptyBuffer b (bufSize buf) WriteBuffer)
BufferListNil -> do
new_buf <- newCharBuffer (bufSize buf) WriteBuffer
return (mode, new_buf)
Run Code Online (Sandbox Code Playgroud)
来自GHC源代码.我想知道为什么这段代码的作者在参数的位置使用花括号.以及变量haCharBuffer,haBuffers,haBufferMode如何从ref,spare_ref和mode中获取值.这些值尚未定义.代码文件是ghc-7.4.1\libraries\base\GHC\IO\Handle\Text.hs
GHC代码的另一部分代码需要澄清:
flushByteWriteBuffer :: Handle__ -> IO ()
flushByteWriteBuffer h_@Handle__{..} = do
bbuf <- …
Run Code Online (Sandbox Code Playgroud) 我试图创建一个宽的水平花括号从键盘字符开始并转换它.
我开始时:
<text x="40" y="120" transform="rotate(90, 40, 120)">}</text>
Run Code Online (Sandbox Code Playgroud)
现在我想扩展文本以使其更宽.忘记使用CSS font-size
元素,font-weight的大小也会相应地改变,产生一个胖符号.
我想通过保持它变薄来拉伸角色.
然后我开始使用symbol
和use
组合,尝试利用该viewbox
功能
这是我上次尝试的内容:
<symbol id="curly-bracket">
<text>}</text>
</symbol>
<use x="40" y="120" transform="rotate(90, 40, 120)" xlink:href="#curly-bracket" />
Run Code Online (Sandbox Code Playgroud)
角色现在看起来很切,我发现无法正确显示.
我很难理解我在做什么,阅读W3 SVG文档.
其中一个遗留系统升级到bash4,其大部分脚本停止工作.我已经将它缩小到如何在a中扩展花括号<(cmdA ...|cmdB ... file{1,2}|cmdZ ...)
.
为了更好地说明差异:
之前(bash 3.2.25):
[root@host1:~]$ bash -version|head -1
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
[root@host1:~]$ cat <(echo sort file{1,2})
sort file1
sort file2
[root@host1:~]$ join <(sed 's/\r//g;s/^[^:]*://' file{1,2}|LANG=C sort)
[root@host1:~]$
Run Code Online (Sandbox Code Playgroud)
之后(bash 4.1.2):
[root@host2:~]$ bash --version|head -1
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
[root@host2:~]$ cat <(echo sort file{1,2})
sort file1 file2
[root@host2:~]$ join <(sed 's/\r//g;s/^[^:]*://' file{1,2}|LANG=C sort)
join: missing operand after `/dev/fd/63'
Try `join --help' for more information.
[root@host2:~]$
Run Code Online (Sandbox Code Playgroud)
它是否为bash4做出了"硬编码"(并且预期?)的更改?或者这个扩展的行为是由一些bash级别的设置(比如set -B
/ set +B
)控制的,可以切换回old/legacy/bash3模式吗?我宁愿改变一些shell范围的开关(而不是重写一堆脚本).
如果这个(bash3)"功能"在错误修复或改进期间被切断 …
IE浏览器,这个:
if (x > 5)
return test;
Run Code Online (Sandbox Code Playgroud)
总是会变成:
if (x > 5)
{
return test;
}
Run Code Online (Sandbox Code Playgroud)
我不是在谈论大括号样式(Allman、GNU、Whiteman 等),我只是说完全有大括号。
有一些东西可以防止/启用单行控制语句,例如:
if (x > 5) return test;
这是AllowShortBlocksOnASingleLine
,但这不是我在这里寻找的东西。
如果它适用于 clang 7 那是理想的,但如果不是让我知道。
#include <stdio.h>
#include <vector>
#include <deque>
// 1st function
void f(int i, int j = 10){
printf("Hello World what");
};
void f(std::vector<int>){
printf("Hello World vec");
};
void f(std::deque<int>){
printf("Hello World deq");
};
int main()
{
f({});
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果第一个函数被注释掉,我会ambiguous call
在编译时得到。如果没有注释掉,则调用第一个函数。为什么{}
隐式转换为int
?
curly-braces ×10
c++ ×2
arrays ×1
bash ×1
braces ×1
c# ×1
c++17 ×1
clang-format ×1
coding-style ×1
declaration ×1
expansion ×1
formatting ×1
haskell ×1
indentation ×1
java ×1
javascript ×1
jsdoc ×1
php ×1
rhel ×1
shell ×1
string ×1
svg ×1
syntax ×1
variables ×1