如本问题所述,GCC定义了非标准一元运算符&&
以获取标签的地址。
为什么要定义一个新的运算符,而不是使用运算符的现有语义&
和/或函数的语义(在哪里foo
和&foo
两者都产生函数的地址foo()
)?
标签名称不会干扰其他标识符,因为它们仅在gotos中使用。变量和标签可以具有相同的名称,并且在标准C和C ++中,从上下文中始终可以清楚地看出含义。因此,这是完全正确的:
name:
int name;
name = 4; // refers to the variable
goto name; // refers to the label
因此需要区分&和&&&,以便编译器知道期望使用哪种名称:
&name; // refers to the variable
&&name; // refers to the label
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句