【发布时间】:2021-11-30 16:45:30
【问题描述】:
我想知道var = &&label 可以用来做什么,即:读取标签的地址?我只能说,通过获取这样的地址然后使用它进行跳转,在块的开头不需要任何__label__ mylabel;(通常需要能够跳转到这样的标签)。
【问题讨论】:
标签: c gcc label memory-address goto
我想知道var = &&label 可以用来做什么,即:读取标签的地址?我只能说,通过获取这样的地址然后使用它进行跳转,在块的开头不需要任何__label__ mylabel;(通常需要能够跳转到这样的标签)。
【问题讨论】:
标签: c gcc label memory-address goto
使用&& 获取标签的地址是 gcc 扩展。它允许您使用包含标签地址的变量作为goto 的目标。例如:
void *p = &&l0;
if (x==1) {
p = &&l1;
} else if (x==2) {
p = &&l2;
}
goto *p;
l0:
printf("at l0\n");
l1:
printf("at l1\n");
l2:
printf("at l2\n");
您可以在gcc documentation 中阅读有关此功能的更多详细信息。
【讨论】: