LINUX下编译c++11的代码
C++11,(即ISO/IEC 14882:2011),是⽬前的C++编程语⾔的最新正式标准。它取代了第⼆版标准(第⼀版公开于1998年,第⼆版于2003年更新,分别通称C++98以及C++03,两者差异很⼩)。新的标准包含核⼼语⾔的新机能,⽽且扩展C++标准程序库。C++11新标准由C++标准委员会于2011年8⽉12⽇公布,并于2011年9⽉出版。此次标准为C++98发布后13年来第⼀次重⼤修正。
像C++这样的编程语⾔,通过⼀种演化的的过程来发展其定义。这个过程不可避免地将引发与现有代码的兼容问题,在C++的发展过程中偶尔会发⽣。不过根据Bjarne Stroustrup(C++的创始⼈并且是委员会的⼀员)表⽰,新的标准将⼏乎100%兼容于现有标准。关于C++11的新特性和⼀些版本变更请看:
⽬前最新版本的GCC/G++是4.8,新版本的GCC⽀持最新的C++11标准,⼗分值得去使⽤&学习。下⾯让我们在Ubuntu12.04 LTS⽤上GCC最新版本,去体验C++11新标准带来的东西吧!
⾸先⾮源码编译式安装:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
等GCC/G++下载并安装完以后,测试是否安装成功:
gcc-4.8 -v
g++-4.8 -v
如果显⽰版本号表⽰安装成功:
安装成功后我们如果要使⽤gcc-4.8和g++-4.8来编译的话,我们就得把gcc改为gcc-4.8,g++同理,改为g++-4.8来进⾏编译。
此时使⽤gcc -v查看默认版本,为4.6版本:
如果你想直接使⽤gcc-4.8⽽不改变编译时gcc改为gcc-4.8的话,我们就可以更改⼀下gcc的软链接:
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
sudo rm /usr/bin/g++
sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++
现在我们⽤gcc -v来测试就能发现变为了4.8了!
既然GCC-4.8使⽤了最新的C++11标准,但是我们为什么还是提⽰错误呢?解决⽅法如下:
在编译的时候添加-std=c++项即可正常编译C++11标准的代码!
我们可以写⼀个简单的例⼦来测试,这⾥⽤的是C++11新标准的范围for(Range for)语句,⽤来遍历给定序列中的每个元素:
linux系统安装步骤csdn
/*************************************************************************
> File Name: test.cpp
> Author: SongLee
> E-mail: lisong.shine@qq
> Created Time: 2014年03⽉23⽇星期⽇ 22时29分19秒
> Personal Blog: songlee24.github.io/
************************************************************************/
#include<iostream>
#include<cstring>
#include<cctype>
using namespace std;
int main()
{
string str("some string");
// range for 语句
for(auto &c : str)
{
c = toupper(c);
}
cout << str << endl;
return 0;
}
上⾯的程序使⽤Range for语句遍历⼀个字符串,并将所有字符全部变为⼤写,然后输出。其中auto类型也是C++11新标准中的,⽤来⾃动获取变量的类型。
好了,接下来进⾏编译运⾏:
g++ -o test test.cpp
提⽰错误:‘c’变量没有类型,范围for循环不允许在C++98标准中使⽤
这是因为GCC/G++默认的-std(即C++语⾔标准)不是C++11,在这⾥默认的是C++98,所以需要显式地开启,即添加-std=c++项:g++ -std=c++11 -o test test.cpp
编译成功运⾏以后输出some string的⼤写形式!
转载:m.blog.csdn/blog/lisong694767315/21947255

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。