Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
根据我对msvc系列和mingw编译器的了解
具体差异如下:
1.在编译源文件过程中,2者对涉及的相关头文件有所不同
比如:
#ifdef G_MSVC
#include 
<GEngine/Template/Vector.hpp>
#endif 
这是盖莫引擎中math.hpp包含的头文件
其中有一个函数:
    ////////////////////////////////////////////////////////
    
/// 给定差量t(0<=t<=1)获取线性插值点p(0) = p1,p(1) = p2
    //////////////////////////////////////////////////////// 
    template<class T>
    
static Vector3<T> GetPoint(const Vector3<T> &from,const Vector3<T> &to,float t);
在编译的Math的时候MinGW需要先"编译"Vector文件
2.2者在处理函数返回值上的不同
比如:
int GetValue()
{
}
msvc需要显式的给定函数返回值
而mingw不需要(具有默认值)
3.对待函数参数的不同
比如
template<class T>
void Add(T a,T a);
4.基本数据结构类型有所不同
5.在获取原始数据上的区别如下:
const int     MAXINT    = std::numeric_limits<int>::max;
const double  MAXDOUBLE = (std::numeric_limits<double>::max)();
6.其他请大家补充吧
posted on 2010-06-26 18:57 ccsdu2009 阅读(2611) 评论(8)  编辑 收藏 引用
Comments
  • # re: 2个c++编译器的差异[未登录]
    Dancefire
    Posted @ 2010-06-26 20:49
    请检查一下你现在使用的mingw的版本。mingw当前的稳定版本是4.5.0-1。但是如果你通过mingw的windows自动安装程序(已不推荐使用) 5.1.6来安装的话,会安装3.4.5。目前比较正确的使用mingw的方法应该是下载压缩包自己解压缩到合适的位置。下一代的自动安装程序mingw-get刚刚进入alpha测试阶段,如果尝试也可。

    说这些的原因是提醒注意是否是由于gcc 3.x和4.x的差异导致的不同。如果是的话,那么只需要安装最新的mingw的编译器即可,不必调整代码。  回复  更多评论   
  • # re: 2个c++编译器的差异[未登录]
    ccsdu2009
    Posted @ 2010-06-27 14:35
    @Dancefire
    但却是用的编译器是devc++自带的
    然后下载mingw  回复  更多评论   
  • # re: 2个c++编译器的差异
    坏人来了
    Posted @ 2010-06-29 15:08
    不知道lz的VC编译器是啥版本的  回复  更多评论   
  • # re: 2个c++编译器的差异
    ccsdu2009
    Posted @ 2010-06-29 16:07
    vc7.1  回复  更多评论   
  • # re: 2个c++编译器的差异[未登录]
    Dancefire
    Posted @ 2010-06-30 09:14
    @ccsdu2009
    如果是Dev-c++那就更惨了。Dev-C++已经5年没有更新过了。其中的gcc版本也是甚老的版本,3.4.2。能尝试着用mingw gcc 4.x以上编译一下看看么? http://tdm-gcc.tdragon.net/ 有非官方的gcc 4.4的安装包。  回复  更多评论   
  • # re: 2个c++编译器的差异[未登录]
    ccsdu2009
    Posted @ 2010-06-30 16:30
    当前编译
    codeblock
    vc7.1
    devc++ 4.9.2  回复  更多评论   
  • # re: 2个c++编译器的差异
    陈梓瀚(vczh)
    Posted @ 2010-06-30 17:19
    @ccsdu2009
    你应该尝试一下vc 10.0。7.1问题多多,经常迫使我写出烂代码。  回复  更多评论   
  • # re: 2个c++编译器的差异
    ccsdu2009
    Posted @ 2010-07-01 08:35
    一个显而易见的原因是 商业化的产品不同于实验性的,不能处处追求最时髦的开发工具  回复  更多评论   

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