如果C源有一个未使用的标签,我认为它(当前)有用的唯一原因是,如果有人将它用作"书签"轻松找到一段代码。除非有这些原因,为什么不使用标签可能不想被删除有任何技术原因吗?换句话说,是否有可能通过删除它们来破坏编译单元,以便外部编译单元可能以某种方式使用它?
编辑:我修改的具体代码是C89之前的版本,因此历史C行为可能会产生影响。
答案 0 :(得分:5)
C99 , C11 标准肯定是安全的,其中明确指出:
标签名称是唯一具有功能范围的标识符。 它可以在函数中的任何地方使用(在goto语句中) 它出现了,并且由其句法外观隐含地声明 (后面是:和声明)。
因此,如果标签在功能内部未使用,您可以将其删除。
PS 在 C89 标准中,我们有:
标签名称是唯一具有功能范围的标识符。 它可以在函数中的任何地方使用(在goto语句中) 它出现了,并且由其句法外观隐含地声明 (其次是:和声明)。 标签名称在其中应是唯一的 功能。
标签再次被限制在功能范围内,但也在旧的光荣书籍 K& R C语言,第58页§3.8转到和标签中说:
标签与变量名称具有相同的形式,后跟a 结肠。它可以附加到与函数相同的任何语句中 去。 标签的范围是整个功能。
所以你可以安全地从任何地方删除它们。