VS2013中试用STLPort遇到的小问题

  今日闲来无事想试试VS2013。原来用的一直是VS2010,跑的那个慢啊!,也许是机器有点旧了 ╮(╯▽╰)╭ 。

于是找了个旗舰版下来装上,win8风格界面自然不用说的啦。装完居然要重启,那就重启吧,一两分钟的事儿(一两分钟能算事么)。

然后加了个string头文件,main函数里就简单输出一个string类对象!Ctrl+F7 ……编译错误 ?_?

好在没多少行(其实就一个O(∩_∩)O哈哈~), 错误说是hypot(float , float)和 hypot(double, double ) 有多个实现。

想起来了VS2013“继承”了VS2010的配置,而VS2010中加入了STLPort-5.2.1。错误很明显了,VS自带的math.h有hypot的实现,

STLPort中也有,抱着血浓于水的信念,就简单的把STLport中hypot加了条件预处理;

1 #if !defined(_STLP_MSVC) || (_STLP_MSVC < 1800) // _cmath.h line 497

2 _STLP_MATH_INLINE2XX(float, hypot, hypot)

3 inline long double hypot(long double x, long double y) { return sqrt(x * x + y * y); }

4 #endif

  因为仅仅是VS2013不好使,所以 (_STLP_MSVC < 1800)就是让 VS2013(_MSVC_VER==1800)不使用这份实现。

VS2010 是_cstdlib.h 中158行的abs()库函数需要做类似处理;

#if !defined(_STLP_MSVC) || (_STLP_MSVC < 1600)

inline _STLP_LONG_LONG abs(_STLP_LONG_LONG __x) { return __x < 0 ? -__x : __x; }

#endif
  修改完之后保存,Ctrl+F7, Ctrl+F5 , 编译…链接…运行OK。
这个小问题到这算解决了吧,以后遇到这类问题应该不难解决了吧~ ^ ^
至于VS2013 感觉怎么样。。。哎。。这玩意这么大,机器又有点旧了,卡就一个字!

你可能感兴趣的:(port)