2 jujiawu1024 jujiawu1024 于 2016.04.16 00:01 提问

C++ 6.0关于goto行号到宏函数的补充?

C++ 6.0关于goto行号到宏函数的补充?请问如何根据goto语句的行标号转到对应的宏函数源代码执行?

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.20 05:14
已采纳

goto行号和宏没有什么关系。宏定义类似函数的写法执行的只是简单的替换,比如
define foo(x) x * x
你写
foo(x),会替换成x * x

suwu150
suwu150   2016.04.16 01:06

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

Visual C++ 6.0中显示行号的方法 - Lemon_Chen - 博客频道 - CSDN.NET http://blog.csdn.net/alalalalalqp/article/details/9244371

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!