您的位置:首页 > 编程语言 > C语言/C++

运行C++11代码

2015-07-14 12:05 218 查看
看《Data structures and algorithms analysis in C++》(4ed.Mark Allen Weiss, Pearson)书籍,发现里面的代码为C++11格式。但是我的电脑上安装的是vs2010,从时间上面推算vs2010肯定不支持C++11,于是我就想着在我的win7电脑上安装一个轻量级的能支持C++11标准的编译器。

经过在网络上的一段探索,决定使用Cygwin下面的gcc编译器。在Cygwin安装的过程中,在选择安装包的时候一定要收到选择gcc编译器的安装,默认情况下不包含gcc包。注意在devel下面选择gcc core,gcc,gdb,make,等安装包,其他的依赖关联的安装包会自动安装成功。以下几个方面要知道:

- 安装成功Cygwin后要设置环境变量,将path下添加C:\cygwin\bin。这样你就能在window cmd下也可以编译c++程序。

- 你在Cygwin terminal 下可以编译C++程序;在设置好环境变量后也可直接在window cmd下面编译和运行C++程序。

- 编译和运行C++程序要将源程序放置在文件夹C:\cygwin\home\Administrator下面,同时在windows cmd下面将当前文件夹转到该文件夹下。

- gcc用于编译C语言程序,而g++则用于编译C++程序,也就是编译以cpp为后缀名的程序,这一点要清楚,不要出现用gcc编译c程序的错误。

- g++编译cpp程序时,默认情况下不支持C++11,你需要使用如下命令才能支持C++11标准的程序:

g++ -std=c++11 ex2.cpp -o ex2


- gcc会在当前文件夹下,编译成功后产生ex2.exe可执行程序。在windows cmd下面,在当前文件夹下直接输入ex2即可执行该程序;而在Cygwin下,则需要安装linux风格的执行方式,即./ex2.exe。

我利用editplus编写了类模板的程序,使用C++11风格的代码,如下:

[code]#include <iostream>
#include <string>
using namespace std;
/**
 * A class for simulating a memory cell.
 */
 template <typename Object>
 class MemoryCell
 {
     public:
         explicit MemoryCell(const Object & initialValue = Object{})
           : storedValue{initialValue} {}
         const Object & read() const {return storedValue;}
         void write(const Object & x) {storedValue = x;}
     private:
         Object storedValue;
 };

 int main()
 {
     MemoryCell<int> m1;
     MemoryCell<string> m2{"hello"};

     m1.write(37);
     m2.write(m2.read() + "world");
     cout << m1.read() << endl << m2.read() << endl;
 }


上述文件名为ex2.cpp,经编译成功后顺序产生ex2.exe,执行该程序,产生了正确的结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: