代码中以":"结尾的这个元素是什么意思?

Rad*_*row 0 c syntax

我遇到了这段代码,我无法理解:

    } else if(ev != PROCESS_EVENT_POLL) {
     continue;
}

again:   //What this line do?

u = NULL;

for(t = timerlist; t != NULL; t = t->next) {
Run Code Online (Sandbox Code Playgroud)

这条线again:是困扰我的那条线.任何解释都会受到欢迎.

Sou*_*osh 7

again:被称为a label.它们基本上用作某些代码位置的标记.它们本身不会影响代码流.

引用C11标准,章节§6.8.1,Labeled语句,一般语法是

labeled-statement:

identifier : statement

案例 constant-expression : statement
默认值:statement

其中casedefault是两个预定义和保留的标签名称,用于特殊目的.

另外,关于语义学,

任何语句都可以在前缀之前声明标识符作为标签名称.标签本身并不会改变控制流程,而这种控制流程在它们之间继续畅通无阻.

  • 一个最常见的[ mis(?) ]使用场景:with goto.

  • 一个广泛使用但不太引人注意的场景:switch声明.