Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
1.C风格的链接方式
比如:
#define GAPI G_DLL_API
#define G_FUNC(ret) extern "C" GAPI ret
编译函数:
G_FUNC(Vector3) GetRandVec3();
对于msvc系列编译器是不允许的
对于mingw系列是被允许的咯
2.对模板支持的差别
对没有实际调用的模板类成员函数存在的问题处理方式的差异
msvc可以给出编译错误
mingw不能

举例来说:
template <class T>
struct Vec2
{
    Vec2();
    Vec2(T x,T y);
    
    Vec2
<T> operator+=(const Vec2& v2)
    {
        
return Vec(x+v2.x,y+v2.y_);  
    }

    T x_,y_;
};
实例化为
Vec2<int> v2;

3.对静态浮点类型成员变量处理的差异
msvc不允许静态浮点类型的成员变量
比如
struct Math
{  
    static const float PI = 3.14.15925f;
};
mingw是允许的

posted on 2010-07-16 10:35 ccsdu2009 阅读(541) 评论(1)  编辑 收藏 引用
Comments
  • # re: c++编译器差异2[未登录]
    coreBugZJ
    Posted @ 2011-03-18 22:41
    受教了。。。

    曾经写了一份源码用 VS2008 编译出来的和 GCC 编译出来的程序,执行情况不同,最终是把一条复合语句拆成了几条,才保证了两者编译结果一致

    而且,
    const double d = 3.4; // 全局

    VS2010 中这种浮点常量在编译期间是不能确定的,
    如果 int a[ (int)(d/2) ]; 不能通过编译。  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理