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

c++ goto语法只能在函数内一位置跳到另一位置?

/ 猿问

c++ goto语法只能在函数内一位置跳到另一位置?

拉丁的传说 2019-02-22 19:15:04

c++ goto语法只能在函数内一位置跳到另一位置


查看完整描述

2 回答

?
翻过高山走不出你

goto在函数体内跳转,不能跳到函数体外的函数。即goto有局部作用域,需要在同一个栈内。
语法如下:
#include <windows.h>
#include <stdio.h>
int main()
{
int n=7;
number2:
printf("hello world\n");
if (n==7)
{
n=8;
printf("n=7 start\n");
goto number0;
printf("n=7 end\n");
}
else
{
printf("n=8 start\n");
goto number1;
printf("n=8 end\n");
}

number0:
printf("hi number0\n");
goto number2;
number1:
printf("hi number1\n");
number3:
printf("number3\n");
system("pause");
return 0;
}




查看完整回答
反对 回复 2019-03-26
?
一只斗牛犬

#include <stdio.h>
int
main( int argc, const char *argv[] )
{
extern void funa( void );
funa();
putch('1');
__asm__("THIS_IS_LABEL_A:nop;");
putch('2');
return 0;
} /* - - - - - - - end of function main - - - - - - - - - - - - - */
void
funa( void )
{
__asm__("pop %ebp;"
"jmp THIS_IS_LABEL_A;"
);
putch('3');
return;
} /* - - - - - - - end of function funa - - - - - - - - - - - */

运行
gcc -g main.c && a
结果为
2

在C++中可能要配合上extern "C"。
相信可以满足你需求。



查看完整回答
反对 回复 2019-03-26
  • 2 回答
  • 0 关注
  • 255 浏览
我要回答

添加回答

回复

举报

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