运行C++11代码

来源:互联网 发布:佐菲奥特曼act通贬淘宝 编辑:程序博客网 时间:2024/06/07 02:16

看《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风格的代码,如下:

#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,执行该程序,产生了正确的结果:
ex2.cpp的编译和运行

0 1
原创粉丝点击