2015-02-09 167 views
0

我通过macport安装了g ++ 4.8。我可以通过调用g ++ - mp-4.8来使用它。C++编译器g ++ 11

我用g ++ 4.8编译这段代码来看看我是否得到了C++ 11,但答案是预标准的C++。这怎么可能?注意:我希望C++ 11可以使用自动迭代器。

if(__cplusplus == 201103L) std::cout << "C++11\n" ; 
else if(__cplusplus == 19971L) std::cout << "C++98\n" ; 
else std::cout << "pre-standard C++\n" ; 
+1

你添加了'-std = C++ 11'标志吗?另外,你错过了那里的C++ 03标准。通过“自动迭代器”,我猜你的意思是GCC 4.7 IIRC中已经提供的自动类型推导。 – 2015-02-09 18:01:15

+3

旧标准是'199711L',你缺少一个'1'。 @Joachim Pileborg:C++ 03没有引入'__cplusplus'的新值# – StenSoft 2015-02-09 18:06:02

回答

4

用-std = C++ 11标志编译你的程序。

+0

谢谢,这是缺少-std标志。 – user2343952 2015-02-10 10:15:41