免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6186 | 回复: 12
打印 上一主题 下一主题

大家好!GOTO跳过变量定义 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-11 14:15 |只看该作者 |倒序浏览
本帖最后由 okocha-jay 于 2011-04-11 14:34 编辑

VC下正常;

GCC对.c许可,对.cpp报错了。

从实现机制上来讲,跳过定义应该是可行的

请问大家如何让.CPP能用goto跳定义?

(老大在某个功能上非要用GOTO,不用不行啊)

示例代码:

int a = 10;
if (a > 1)
    goto FAIL;
int b = 0; // goto跳过此定义
return 0;
FAIL:
   return 1;

论坛徽章:
0
2 [报告]
发表于 2011-04-11 14:29 |只看该作者
不知所云

论坛徽章:
0
3 [报告]
发表于 2011-04-11 14:37 |只看该作者
本帖最后由 雨夜流星 于 2011-04-11 14:38 编辑

木有明白LZ的意思啊


  1. #ifdef AA
  2. switch()
  3. {
  4. #endif
  5.     int a;

  6. #ifdef AA
  7.     case 1:
  8.     default:
  9. #endif
  10.           do sth 1;
  11. #ifdef AA
  12.           do sth 2;
  13. }
  14. #endif
复制代码

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2011-04-11 14:45 |只看该作者
试试这样:
int a = 10;
if (a > 1)
    goto FAIL;
{
int b = 0; // goto跳过此定义
return 0;
}
FAIL:
   return 1;

论坛徽章:
0
5 [报告]
发表于 2011-04-11 15:01 |只看该作者
纯C根本编译不过吧!

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
6 [报告]
发表于 2011-04-11 15:05 |只看该作者
GCC对.c许可,对.cpp报错了。



g++ xx.cpp
gcc怎么编译cpp的,求写法??

论坛徽章:
0
7 [报告]
发表于 2011-04-11 15:17 |只看该作者
回复 1# okocha-jay


    为什么不用这种方式直接跳过呢?

        int a = 10;
        if (a <= 1){
                int b = 0;
                return 0;
        }
        return 1;

论坛徽章:
0
8 [报告]
发表于 2011-04-11 15:21 |只看该作者
回复 1# okocha-jay


    没查是在C++ primer第几页,

http://zhidao.baidu.com/question/198254528.html

goto语句不能跨越变量的定义语句向前跳转,但向后跳过已经执行的变量定义语句则是合法的。
向前跳过未执行的变量定义语句,意味着变量可能在没有定义的情况下使用。
向后跳回到一个变量定义之前,则会使系统撤销这个变量,然后再重新创建它。

论坛徽章:
0
9 [报告]
发表于 2011-04-11 16:03 |只看该作者
4楼说的,用{}做一个作用域,应该是可以的。

论坛徽章:
0
10 [报告]
发表于 2011-04-11 16:35 |只看该作者
本帖最后由 beyonder2015 于 2011-04-11 16:40 编辑

回复 6# shang2010

gcc 是可以编译.cpp文件的 而且是用c++方式编译。这确实有的矛盾,应该是历史原因吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP