【问题标题】:Question about C Syntax: Nested curly brackets for struct declaration mid-function?关于 C 语法的问题:结构声明中间函数的嵌套大括号?
【发布时间】:2020-03-10 16:39:20
【问题描述】:

标题可能有点混乱,因为我无法描述它。我确信这已经被问过了,但我不知道 如何 正确地问它并在网站上找到它。

本质上,对于 C,我正在查看一些内核代码,发现在某些函数中还有一组额外的“嵌套”花括号 ('{}'),其标题注释始终为“TRACE”和包含有关结构的信息。

我试图弄清楚这种语法的名称以及更多关于它的一般信息。我将不胜感激。非常感谢! (下面是屏幕截图)

Screencap of example code

【问题讨论】:

  • 它正在为局部变量创建一个嵌套范围。
  • 请将您的代码发布为文本而不是图像。
  • 称为复合语句,也称为block。它们可以嵌套。

标签: c syntax kernel


【解决方案1】:

这只是一个复合语句。任何可以有语句的地方,例如x = 3;while (i) …,都可以有复合语句{ … }。在复合语句中,可以有声明和语句。

复合语句经常作为与ifwhile 或类似语句一起使用的语句:

if (a < b)
{ // Start compound statement.
   foo(a);
   bar(b);
}

while (n--)
{ // Start compound statement.
    foo(p, n);
}

但是,您也可以有自己的复合语句。这对于在复合语句中声明标识符很有用,这将它们的范围限制在该语句(称为 block)。这减少了出现错误的机会(由于标识符在其范围之外不可见,因此不能在该范围之外意外使用)。复合语句也可以仅用于组织,向读者说明所附语句是一组相关的,并且在一定程度上与它们之前或之后的语句在概念上是分开的。

函数体也是复合语句:

int foo(int a, int b)
{ // Start compound statement.
    return a+b;
}

【讨论】:

    猜你喜欢
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多