码迷,mamicode.com
首页 > 其他好文 > 详细

从VC到g++遇到的事

时间:2014-09-16 15:37:50      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   文件   div   sp   

最近做的项目,需要把代码从VC移植到g++下编译,在这个过程中,遇到了几个平台相关的问题——在VC下顺利编译的代码,但在g++中编译报错。

这里贴出来给大家分享一下:

 

1. 枚举类型

问题代码

enum MyWeek
{
    Monday,
    Tuesday,
};

MyWeek mw = MyWeek::Monday;

VC

d:\VC\main.cpp(17) : warning C4482: 使用了非标准扩展: 限定名中使用了枚举“MyWeek”

g++

main.cpp:11:14: error: ‘MyWeek’ is not a class or namespace
  MyWeek mw = MyWeek::Monday;
              ^

总结

MyWeek::Monday不是C++标准,所以应该尽量避免这种写法。有一个建议是在命令枚举时加上枚举类型的前缀,这样可以有效避免枚举名重复的情况。比如

enum MyWeek
{
    MW_Monday,
    MW_Tuesday,
};

2. std::map::cbegin()

问题代码

std::map<int, int>::const_iterator cIter = testMap.cbegin();

VC

顺利编译通过

g++

main.cpp:7:53: error: ‘class std::map<int, int>’ has no member named ‘cbegin’
  std::map<int, int>::const_iterator cIter = testMap.cbegin();
                                                     ^

总结

这个结果是在g++4.8.2跑的,说明在g++下,map::cbegin, map::cend之类的方法都是没有的。

3. #include<map >

include的头文件中如果存在空格,在VC下是没有问题的,但是在g++下会报错。

main.cpp:2:16: fatal error: map : 没有那个文件或目录
 #include <map >
                ^
compilation terminated.

从VC到g++遇到的事

标签:style   blog   color   io   使用   ar   文件   div   sp   

原文地址:http://www.cnblogs.com/quark/p/3974847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!