欢迎大家光临【无师自通-教程网】您的到来是我们的荣幸。本站提供photoshop教程,ps教程,flash教程,cad教程,网页制作教程,excel教程,asp教程,vb教程,3d教程,c语言教程,html教程,coreldraw教程,dreamweaver教程,java教程,3dmax教程 等各种教程为主题的内容和服务,相信您会在这里找到您所需要的东东。无师自通伴您一生-谢谢您的光临!!
网站地图 设为首页
简繁切换 加入收藏
栏目待定 留言本站
您现在的位置: 无师自通-教程网 >> 操作系统 >> Linux >> Linux开发 >> 教程正文

  没有公告

教程: Linux教程-编程开发-Linux 编程之 3.2.x bug 的弥补 更多...
教程: Linux教程-编程开发-Linux 编程之 3.2.x bug 的弥补


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



教程录入:admin    责任编辑:admin 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     
     
     
     

    dos入门教程

    dos入门教程-2

    dos入门教程-1
    免责声明!本站资料大部分来自于互联网,其版权归原作者或其他合法者所有.如内容涉及或侵犯了您的权益,请通知本人,我将尽快处理!.欢迎您的光临。
    辽ICP备07003958号
    无师自通,伴你一生-教程网