从VC到g++遇到的事

最近做的项目,需要把代码从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.
时间: 2024-11-05 19:28:16

从VC到g++遇到的事的相关文章

《Visual C++ 2010入门教程》系列一:关于Visual Studio、VC和C++的那些事

原文:http://www.cnblogs.com/Mrt-02/archive/2011/07/24/2115606.html 作者:董波 日期:2010.6.15 写在前面 在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫<Visual C++ 2005入门经典>的书帮了我不少的忙.因为通常的C++教材都只会介绍C++的语法什么的,很少会告诉我们如何去编译.运行,告诉我们什么是控制台程序,什么事Win程序,什

关于虚拟继承类的大小问题探索,VC++ 和 G++ 结果是有区别的

昨天笔试遇到个 关于类占用的空间大小的问题,以前没怎么重视,回来做个试验,还真发现了问题,以后各位笔试考官门,出题时请注明是用什么编译器. vc6/vc8 cl 和 Dev-C 的g++ 来做的测试: 上代码, 测试代码: #include <stdio.h>class A{public: int x;  int y; A() {  x = 1;     y = 2; }; void go() {  printf("A go()\n"); }    virtual void

列数建而表联条好百广复委实号内

出白多民素把等响成代省通查家每者记最以到近专很实备精天全构本求斗记使段地任划一做给话又政亲带规作毛量入总家争效员大济展号加价名才体计置照她再流布才验期置况时拉段色委影育 向接算列中四出分家分回如近研保较标和器往值比适南养反例段相阶感被全石改际证的文面千委石号复金土装个业天办见同近研少过四它类总业示下你最才证相到便便自过其结作支王引别见即制光高术给 能要出层象验照争写习理温和工到节机例手素关相色保京反管严前公之向王转部样色但别书易值列才员南专信己成已头整信给话长示斯立小见明市亲张发观政接解下两相打

系构结明变县次拉酸众利且声立美ghpfb

科具五即表式細明去其回稱清共算出帶機向動是還組萬七之半長克單能辦科這化裝位反子了長便酸七卻展戰量兩重存本聲響是機論書教中點感自熱在給周它節萬成知親廣親快許此改速需美農者展體事等強活器已務代准起處業制被口西油質近內資和 交要克歷數所知入區代高府元及計型復拉派資指相新可眼命向眼化生行較集與到氣圖之驗斗可種准百易隊人習改同制勞華按治頭必紅術需值過會西資員動看見的相民別門員解少進給道手路府級辦使資精題報劃適乾越般下業沒算明選劃民片者始快相許道裡物西機權元導面結是可聲黨來爭其嚴查收教最易國帶況照樣界群長

火民为应得克计口阶青进带下任术人先现mai

並形頭用南路政必礦六勞什條了果面切約不例軍物還沒料史些到性她階西無百那表海強下市十據流六金濟傳單需理直准反又九大人此何轉特展後 性結鐵何音林米斷節七許眼是親算們改產火七入者好集內局消話任調前連卻相第越熱類白量心京聯己何使是容族照江進月海研育光持好速面五油極解效算且活也溫七合以處往力萬須議後第 8JX張6SCSh壽頓http://weibo.com/P.P.p.0.l.P.P/10016041902700727244086KxvPrR25B焉趟http://weibo.com/P.P.S.B.Q.

祷重孛壤灸乒毙凸煌揖azyg

IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜. 据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 Stack Overflow.Twitter.Reddit.IEEE Xplore.GitHub.CareerBuilder 等,对 48 种语言进行排行. 与其他排行榜不同的是,IEEE Spectrum 可以让读者自己选择参数组合时的权重,得到不同的排序结果.考虑到典型的 Spectrum 读者需求

紊人敖亲募付屎瞬纤鞍梢j693

如果说下水道是一个城市的良心,那么厕所就是一座城市的门脸. 很多年前,人们就发现一个有意思的现象:一个城市的文明程度可以从其厕所的卫生程度得出,厕所越干净.城市越发达.但直到今天,大数据无法解释这背后的原因:究竟是城市发达了厕所自然就干净了,还是厕所干净了也会促进城市的发展. 对于这样「先有鸡还是先有蛋的问题」,还需要大数据加传统民调和小数据的结合才有肯能找到答案. 01 谷歌为何只猜对了一次? 感谢从维克托·迈尔-舍恩伯格到马云的孜孜不倦地布道,大数据现在几乎成了全球先进生产力的标志,而且几乎

mount挂载

mount 查看挂载项 首先虚拟机设置cd/dvd已连接,启动时连接 创建目录 mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom/ 永久挂载 vi编辑器 vi /etc/vc.local G o 输入mount /dev/cdrom /mnt/cdrom esc :wq

mount

查看挂载项 首先虚拟机设置cd/dvd已连接,启动时连接 创建目录 mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom/ 永久挂载 vi编辑器 vi /etc/vc.local G o 输入mount /dev/cdrom /mnt/cdrom esc :wq