卷曲bracers内部结构的声明

Declaration of the struct inside of the curly bracers

本文关键字:声明 结构 内部 bracers 卷曲      更新时间:2023-10-16

由于某种原因,结构window在卷曲bracers内部声明和使用,作者为什么要这样做?

// separated header with defined struct
typedef struct SIZE
{
UINT Width;
UINT Height;
} SIZE;
.....
// .cpp file that uses header with SIZE but doesn't have a straightforward relation to header
void foo(UINT W, UINT H)
{
// magic
{
SIZE window = {};
window.Width = W;
window.Height= H;
// magic with window
}
// magic
}

在中

void foo(UINT W, UINT H)
{
// magic
{
SIZE window = {};
window.Width = W;
window.Height= H;
}
// magic
}

额外的大括号建立了一个复合语句,也称为块。在这个例子中,这个块除了建立window的作用域之外什么都不做。CCD_ 2仅存在于块内;一旦达到闭合支架,window将被破坏。

旁注:

window的初始化可以大大简化:

void foo(UINT W, UINT H)
{
// magic
{
SIZE window = {W,H};
}
// magic
}

这就利用了聚合初始化。

另一个注意事项是:除了常量之外,避免使用ALLCAPS标识符。它可能会导致用以前定义的常量进行意外的宏替换,就像这个可怜的灵魂艰难地找到的一样。此外,应避免使用单字母变量。单个字母往往不足以表达变量所代表的内容,而且它们很容易意外混淆,同时混淆时也很难发现。