动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   服务器 → 阅读文章
  

 Linux 编程之++ 3.2.x bug 的弥补

作者来源: 
阅读 数 438 人次 , 2006-4-5 4:36:00 


g++ 3.2 bug的弥补

在一个C++邮件组中,有一个同志说了一件事,说 g++ 3.2.x(至少到目前的g++ 3.2.3)不支持 sizeof临时对象,我很诧异,虽然我没怎么用过将临时object sizeof,但是至少C++应该是支持的,我做了试验

class test
{

};
cout< < sizeof ( test() );

g++果然报错: 不能 sizeof 一个函数: test().

居然将test()当函数处理了,难道这里有二义性?不可能呀,如果我这么做:
class test
{
public:
test(int i){}

};

int x = 10;
test(x);将产生二义性

如何才能排除这个问题呢?明显是g++的bug.

其实排除很简单,我给他写一个template类就行了,没几行代码:

template < typename T >
struct __sizeof
{
operator T() const { return T(); }
operator int() const { return sizeof(operator T()); }
};

使用的时候只需要: cout< < __sizeof < test >() < < endl;

是不是很简单呢?

不过总体来说,g++是最接近C++标准的编译器之一,有瑕疵是难免的,人为可以绕开bug就行了,呵呵...

DarkSpy

 本文Tagslinux  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Linux 编程之C与脚本的混合编程
· 下一篇:Linux 内核开发者的实用技巧
· 如何在命令行下运行update_all
· 让 Python 与 DB 共舞 - 谈 DB-API 模组
· 多服务器的日志合并统计(4)
· Solaris 系统安装
· RedHat Linux 9下使用多个命令


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077