免费注册 查看新帖 |

Chinaunix

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

Coo - C, Object Oriented [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-05-22 11:43 |只看该作者
本帖最后由 pan_0326 于 2010-05-22 13:08 编辑

回复 6# EricFisher


1.struct T {}; //空结构体
  因为Interface是没有数据的,但仍然需要位置信息,所以要用空结构体作为Interface的数据.
  要求sizeof(struct T)==0,align=1
  gcc和tcc都支持此特性
2.struct T { int n; int n }; //结构成员重名
  由于多继承共同祖类的原因,需要支持成员重名,宏EXTENDS2的覆盖技术更需要此特性
  gcc和tcc都支持此特性
3.struct T1 { struct T; }; //无名成员结构
  这是实现对祖类成员透明访问的关键特性
  tcc支持此特性,gcc加个参数-fms-extensions后也支持
4.struct { union { int n; double f; }; } t={1.2f}; //联合初始化最后的成员f
  如果要使用EXTENDS2,最好支持此特性,因为虚表指针覆盖发生在首部,当然初始化就要避开到尾部.
  这是Coo唯一要求的新特性,C语言规范对此很模糊,所以有的编译器不支持,有的初始化第一个.
  tcc根本不支持联合初始化,我在tcc-0.9.25基础上做了修改成tcc-0.9.25.1完美支持尾初始化.
  gcc只支持首初始化,需要以后修改.现在可以暂时用C99特性中的指定初始化代替.
  其实此特性很不重要,像gcc那样支持首初始化就可以了.因为只使用在带虚函数指针的类的初始化中,
  几乎没有人会这么干,这条只是理论上的洁癖般的完善.

所以Coo可以放心使用,没修改C语言的什么规范,gcc支持就足够了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP