在C中,是否可以删除未使用的标签并保持程序正常工作?

时间:2015-08-28 16:19:34

标签: c label

如果C源有一个未使用的标签,我认为它(当前)有用的唯一原因是,如果有人将它用作"书签"轻松找到一段代码。除非有这些原因,为什么不使用标签可能不想被删除有任何技术原因吗?换句话说,是否有可能通过删除它们来破坏编译单元,以便外部编译单元可能以某种方式使用它?

编辑:我修改的具体代码是C89之前的版本,因此历史C行为可能会产生影响。

1 个答案:

答案 0 :(得分:5)

C99 C11 标准肯定是安全的,其中明确指出:

  

标签名称是唯一具有功能范围的标识符。   它可以在函数中的任何地方使用(在goto语句中)   它出现了,并且由其句法外观隐含地声明   (后面是:和声明)。

因此,如果标签在功能内部未使用,您可以将其删除。

PS C89 标准中,我们有:

  

标签名称是唯一具有功能范围的标识符。   它可以在函数中的任何地方使用(在goto语句中)   它出现了,并且由其句法外观隐含地声明   (其次是:和声明)。 标签名称在其中应是唯一的   功能

标签再次被限制在功能范围内,但也在旧的光荣书籍 K& R C语言,第58页§3.8转到和标签中说:

  

标签与变量名称具有相同的形式,后跟a   结肠。它可以附加到与函数相同的任何语句中   去。 标签的范围是整个功能

所以你可以安全地从任何地方删除它们。