免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: garyv
打印 上一主题 下一主题

C语言标号问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-12-27 16:24 |只看该作者
本帖最后由 AD8018 于 2011-12-27 16:31 编辑

标号不能赋值给变量,的确有一定的局限性,
一度很期盼能这样写代码

  1. address[] = {label0, label1, label2, label3};

  2. int i = .....;
  3. goto address[i];

  4. label0: ...
  5. label1: ...
  6. label2: ...
  7. label3: ...
复制代码

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
12 [报告]
发表于 2011-12-27 16:26 |只看该作者
回复 11# AD8018

这才真的是汇编搞多了。

论坛徽章:
0
13 [报告]
发表于 2011-12-27 16:38 |只看该作者
标号怎么可以进行类型转换呢?

论坛徽章:
0
14 [报告]
发表于 2011-12-27 16:40 |只看该作者
回复 11# AD8018


    那为什么不这样

  1. void func_1 () {...}
  2. void func_2 () {...}
  3. ...

  4. void (*func[])() = {func_1 , func_2 , ...} ;

  5. int i ;
  6. func[i]() ;
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2011-12-27 16:53 |只看该作者
老谭的书我也看过,我怎么就没有糊涂呢?

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
16 [报告]
发表于 2011-12-27 17:00 |只看该作者
本帖最后由 zylthinking 于 2011-12-27 17:01 编辑
AD8018 发表于 2011-12-27 16:24
标号不能赋值给变量,的确有一定的局限性,
一度很期盼能这样写代码


这个gcc扩展真有, 但我忘记具体怎么搞了

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
17 [报告]
发表于 2011-12-27 17:44 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
18 [报告]
发表于 2011-12-28 12:22 |只看该作者
pmerofc 发表于 2011-12-27 17:44
各人不同的
看谭书时你大概已经从很多别的书中接受了很多正确的概念
所以能看出谭的错误

我看老谭的 C 语言之前,
没有任何别的基础,只看过一本 BASIC 语言,不过也是老谭写的。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
19 [报告]
发表于 2011-12-28 12:27 |只看该作者
本帖最后由 zylthinking 于 2011-12-28 12:27 编辑
flw 发表于 2011-12-28 12:22
我看老谭的 C 语言之前,
没有任何别的基础,只看过一本 BASIC 语言,不过也是老谭写的。


别再说了, 再说你被扣上 受荼毒而不自觉, 自带干粮了

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
20 [报告]
发表于 2011-12-28 12:29 |只看该作者
zylthinking 发表于 2011-12-27 17:00
这个gcc扩展真有, 但我忘记具体怎么搞了


又返回去看了看书, 原来是这样搞:

void* labels[] = {
    &&label1, &&labe2
};

goto labels;

label1:
xxx
label2:
xxx
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP