警告:取标签的地址是非标准的

use*_*914 2 c++ goto g++

任何人都可以解释以下代码如何创建标签?

char memory[] = "hello";
&&memory[0];

error: label 'memory' used but not defined
Run Code Online (Sandbox Code Playgroud)

Ded*_*tor 6

&&memory[0];
Run Code Online (Sandbox Code Playgroud)

这不是有效的C++,因此符合标准的扩展可以分配人们可能想要的任何语义.

碰巧的是,这&&label是GNU人们为计算goto(GNU扩展)获取标签地址的方式.

而已.

参考:https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html