为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用goto到指定标签名(变量存储)?有什么办法吗?

如何使用goto到指定标签名(变量存储)?有什么办法吗?

C Yii
芜湖不芜 2021-09-17 11:11:23
如题,比如我想用一个char变量保存标签名,goto跳转的标签以变量代替。能否实现?如:char c='p';goto c; //c为'p’cout<<"+";p:return 0;
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

goto是无条件跳转,只能在goto语句出现处改变控制流,无法通过本身返回。要用goto返回,可以定义多个label,在不同位置配合不同label使用goto语句。
label在函数内定义,作用域就是整个函数,和其它名称一样无法改变。由于不是左值,它没有生存期,仅在编译期有意义。
everyone998 错误。编译器至少会对label标识符进行语义检查。函数调用和goto是不同的。函数调用或返回时,一般的实现中需要根据调用约定清理堆栈。调用时先保存现场,复制实际参数,然后才是跳转,并不是直接无条件跳转那么简单。也因此goto语句无法跨函数跳转。

查看完整回答
反对 回复 2021-09-23
?
慕村9548890

TA贡献1884条经验 获得超4个赞

没理解错的话,题主指的是用变量存储标签以动态跳转。
标签地址了解一下,
void *label = &&p;
goto *label;
cout << "+";
p:
return 0;

查看完整回答
反对 回复 2021-09-23
  • 2 回答
  • 0 关注
  • 516 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信