C 标签是指令还是常量

问题描述 投票:0回答:1

我问C如何管理标签。

例如:

if (false)
label: printf("HELLO ");

printf("WORLD ");
goto label;

在 GCC 上打印 WORLD HELLO 这是未定义的行为吗? (编译器不会将标签定义作为指令处理)

其他我预计会出现某种错误,例如“遇到未定义的标签”

c label goto
1个回答
0
投票

标签既不是指令也不是常量。它们有自己的构造。但是,标签只能应用于到语句。

C 标准第 6.8.1p1 节中指定了标记语句的语法,如下所示:

标签声明:

  • 标识符声明
  • case
    常量表达式语句
  • default
    声明

在上面,第一种情况中的“标识符”是一个命名标签。标签有自己的命名空间,与结构/联合标签、成员或其他标识符分开。标签还具有函数作用域,这意味着它们可以在定义它们的函数中的任何位置使用。

© www.soinside.com 2019 - 2024. All rights reserved.