运行C++11代码

看《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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值