我问C如何管理标签。
例如:
if (false)
label: printf("HELLO ");
printf("WORLD ");
goto label;
在 GCC 上打印 WORLD HELLO 这是未定义的行为吗? (编译器不会将标签定义作为指令处理)
其他我预计会出现某种错误,例如“遇到未定义的标签”
标签既不是指令也不是常量。它们有自己的构造。但是,标签只能应用于到语句。
C 标准第 6.8.1p1 节中指定了标记语句的语法,如下所示:
标签声明:
- 标识符:声明
常量表达式:语句case
:声明default
在上面,第一种情况中的“标识符”是一个命名标签。标签有自己的命名空间,与结构/联合标签、成员或其他标识符分开。标签还具有函数作用域,这意味着它们可以在定义它们的函数中的任何位置使用。