卷曲bracers内部结构的声明
Declaration of the struct inside of the curly bracers
由于某种原因,结构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标识符。它可能会导致用以前定义的常量进行意外的宏替换,就像这个可怜的灵魂艰难地找到的一样。此外,应避免使用单字母变量。单个字母往往不足以表达变量所代表的内容,而且它们很容易意外混淆,同时混淆时也很难发现。
相关文章:
- 在哪里声明结构运算符重载
- 如何正确转发声明结构"using XXX"?
- 在C++我可以在不在本地声明结构的情况下将结构作为指针传递吗?
- 在 for 循环中声明结构是否合法C++?
- 为什么我们可以创建一个模板类结构,其中包含许多与声明结构时指定的参数不同的参数
- 当声明结构数组时,CPPCHECK停止对整个文件的分析
- C++ - 声明结构和类时不允许使用不完整的类型
- 在声明末尾或 main 中声明结构或类实例之间的区别
- 在模板类中声明结构,未为成员函数定义
- C++ .h 文件中转发声明结构,并在.cpp文件中定义结构
- 如何在C++中声明结构变量
- 在 C 中声明结构的新实例
- 在类内部声明结构
- 为什么可以用相同的名称声明结构和非结构
- 在结构定义内部声明结构的堆栈
- 为什么在声明结构时不能初始化结构中的向量成员?
- 在c++头文件中声明结构体
- 如何声明结构体?
- c++中声明结构体的问题
- 只在库cpp中有定义的前向声明结构