关于 C 语法的问题:结构声明 mid-function 的嵌套花括号?
Question about C Syntax: Nested curly brackets for struct declaration mid-function?
标题可能有点混乱,因为我无法描述它。我确信这已经有人问过了,但我不知道 如何 正确地询问它并在网站上找到它。
本质上,对于 C,我正在查看一些内核代码,发现在某些函数中有一组额外的 'nested' 大括号('{}'),它总是有一个 header "TRACE" 的注释并包含有关结构的信息。
我想弄清楚这种语法的名称以及更多关于它的一般信息。我将不胜感激任何帮助。非常感谢! (下方屏幕截图)
Screencap of example code
这只是一个复合语句。任何可以有语句的地方,例如 x = 3;
或 while (i) …
,都可以有复合语句 { … }
。在复合语句中,可以有声明和语句。
复合语句经常遇到,如与 if
、while
或类似语句一起使用的语句:
if (a < b)
{ // Start compound statement.
foo(a);
bar(b);
}
while (n--)
{ // Start compound statement.
foo(p, n);
}
但是,您也可能有自己的复合语句。这对于在复合语句中声明标识符很有用,它将标识符的范围限制在该语句中(称为 块 )。这减少了出现错误的机会(因为标识符在其范围之外是不可见的,所以它不会在该范围之外被意外使用)。复合语句也可以仅用于组织,向 reader 说明封闭的语句是一组相关的,并且在某种程度上与它们之前或之后的语句在概念上是分开的。
函数体也是复合语句:
int foo(int a, int b)
{ // Start compound statement.
return a+b;
}
标题可能有点混乱,因为我无法描述它。我确信这已经有人问过了,但我不知道 如何 正确地询问它并在网站上找到它。
本质上,对于 C,我正在查看一些内核代码,发现在某些函数中有一组额外的 'nested' 大括号('{}'),它总是有一个 header "TRACE" 的注释并包含有关结构的信息。
我想弄清楚这种语法的名称以及更多关于它的一般信息。我将不胜感激任何帮助。非常感谢! (下方屏幕截图)
Screencap of example code
这只是一个复合语句。任何可以有语句的地方,例如 x = 3;
或 while (i) …
,都可以有复合语句 { … }
。在复合语句中,可以有声明和语句。
复合语句经常遇到,如与 if
、while
或类似语句一起使用的语句:
if (a < b)
{ // Start compound statement.
foo(a);
bar(b);
}
while (n--)
{ // Start compound statement.
foo(p, n);
}
但是,您也可能有自己的复合语句。这对于在复合语句中声明标识符很有用,它将标识符的范围限制在该语句中(称为 块 )。这减少了出现错误的机会(因为标识符在其范围之外是不可见的,所以它不会在该范围之外被意外使用)。复合语句也可以仅用于组织,向 reader 说明封闭的语句是一组相关的,并且在某种程度上与它们之前或之后的语句在概念上是分开的。
函数体也是复合语句:
int foo(int a, int b)
{ // Start compound statement.
return a+b;
}