问题描述
- C++ 6.0关于goto行号到宏函数的补充?
-
C++ 6.0关于goto行号到宏函数的补充?请问如何根据goto语句的行标号转到对应的宏函数源代码执行?
解决方案
goto行号和宏没有什么关系。宏定义类似函数的写法执行的只是简单的替换,比如
define foo(x) x * x
你写
foo(x),会替换成x * x
解决方案二:
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
时间: 2025-01-19 06:43:55