- 主题:goto语句支持变量么?
从栈中取出goto的地址,
比如 T=s.top().label;
goto T;
或者
switch(T) {
case label1:
goto label1;
break;
case label2:
....
}
这种,支持不支持,如果支持的话,T和label label/1/2 应该定义成什么类型的?
--
FROM 119.251.19.*
man longjmp
man setjmp
【 在 luchu 的大作中提到: 】
: 从栈中取出goto的地址,
: 比如 T=s.top().label;
: goto T;
: 或者
: switch(T) {
: case label1:
: goto label1;
: break;
: case label2:
: ....
: }
: 这种,支持不支持,如果支持的话,T和label label/1/2 应该定义成什么类型的?
--
FROM 27.38.197.*
不需要函数间跳转,函数内跳转就可以。
#include <iostream>
#include <stack>
using namespace std;
int main() {
unsigned int label1,label2;
stack<unsigned int> stk;
stk.push(label1);
stk.push(label2);
while(!stk.empty()) {
unsigned int to=stk.top();
stk.pop();
goto to;
}
resume:
int i=0;
if(++i==5) goto exit;
label1:
cout << " This is label1" << endl;
goto resume;
label2:
cout << " This is label2" << endl;
goto resume;
exit:
return 0;
}
$ g++ -g goto.cpp
goto.cpp: In function 'int main()':
goto.cpp:26:14: error: label 'to' used but not defined
goto to;
^~
【 在 flw 的大作中提到: 】
: man longjmp
: man setjmp
:
--
修改:luchu FROM 119.251.19.*
FROM 119.251.19.*
gcc扩展有
https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
【 在 luchu 的大作中提到: 】
: 标 题: goto语句支持变量么?
: 发信站: 水木社区 (Mon May 16 18:56:40 2022), 站内
:
: 从栈中取出goto的地址,
: 比如 T=s.top().label;
: goto T;
: 或者
: switch(T) {
: case label1:
: goto label1;
: break;
: case label2:
: ....
: }
: 这种,支持不支持,如果支持的话,T和label label/1/2 应该定义成什么类型的?
: --
: 数据是可以骗人的!
:
:
: ※ 来源:·水木社区 mysmth.net·[FROM: 119.251.19.*]
--
FROM 101.86.10.*