哪个版本的gcc才支持c11
而知,低版本的gcc不支持c11。
(而我此處的eglibc 2.17,和那人的glibc-2.16.0,都是需要支持c11的gcc的)
所以此處想要去搞清楚,什么版本的,哪個版本的,gcc,才支持c11。
【解決過程】
1.google搜:
gcc c11
就可以看到:
2 Language Standards Supported by GCC
而明白:
- C89=C90:gcc選項是:-ansi, -std=c90 or -std=iso9899:1990;
- 帶了GNU擴展的:-std=gnu90
- C94=C95:gcc選項:-std=iso9899:199409
- C99:gcc選項:-std=c99 or -std=iso9899:1999
- 未完成C99標(biāo)準(zhǔn)之前,叫做C9X
- 帶了GNU擴展的:-std=gnu99
- C11:gcc選項是-std=c11 or -std=iso9899:2011
- 未完成C11標(biāo)準(zhǔn)之前,叫做C1X
- 帶了GNU擴展的:-std=gnu11
2.后來找到:
How to enable c11 on later versions of gcc?
可知:
gcc 4.7
之后,才支持c11.
3.參考:
C11Status
得知:
-std=c1x?GCC 4.6 -std=c11?GCC 4.7 uchar.h?Library issue (glibc 2.16) |
?
【總結(jié)】
gcc是到了4.7,才真正支持c11的。
??C++11,(即ISO/IEC 14882:2011),是目前的C++編程語言的最新正式標(biāo)準(zhǔn)。它取代了第二版標(biāo)準(zhǔn)(第一版公開于1998年,第二版于2003年更新,分別通稱C++98以及C++03,兩者差異很小)。新的標(biāo)準(zhǔn)包含核心語言的新機能,而且擴展C++標(biāo)準(zhǔn)程序庫。C++11新標(biāo)準(zhǔn)由C++標(biāo)準(zhǔn)委員會于2011年8月12日公布,并于2011年9月出版。此次標(biāo)準(zhǔn)為C++98發(fā)布后13年來第一次重大修正。
??? 像C++這樣的編程語言,通過一種演化的的過程來發(fā)展其定義。這個過程不可避免地將引發(fā)與現(xiàn)有代碼的兼容問題,在C++的發(fā)展過程中偶爾會發(fā)生。不過根據(jù)Bjarne Stroustrup(C++的創(chuàng)始人并且是委員會的一員)表示,新的標(biāo)準(zhǔn)將幾乎100%兼容于現(xiàn)有標(biāo)準(zhǔn)。關(guān)于C++11的新特性和一些版本變更請看:C++11-維基百科
? ? 目前最新版本的GCC/G++是4.8,新版本的GCC支持最新的C++11標(biāo)準(zhǔn),十分值得去使用&學(xué)習(xí)。 下面讓我們在Ubuntu12.04 LTS用上GCC最新版本,去體驗C++11新標(biāo)準(zhǔn)帶來的東西吧!
首先非源碼編譯式安裝:
[c++]?view plaincopy等GCC/G++下載并安裝完以后,測試是否安裝成功: [c++]?view plaincopy
如果顯示版本號表示安裝成功:
安裝成功后我們?nèi)绻褂胓cc-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的軟鏈接:
[c++]?view plaincopy既然GCC-4.8使用了最新的C++11標(biāo)準(zhǔn),但是我們?yōu)槭裁催€是提示錯誤呢?解決方法如下:
在編譯的時候添加-std=c++11選項即可正常編譯C++11標(biāo)準(zhǔn)的代碼!
我們可以寫一個簡單的例子來測試,這里用的是C++11新標(biāo)準(zhǔn)的范圍for(Range for)語句,用來遍歷給定序列中的每個元素:
[cpp]?view plaincopy上面的程序使用Range for語句遍歷一個字符串,并將所有字符全部變?yōu)榇髮?#xff0c;然后輸出。其中auto類型也是C++11新標(biāo)準(zhǔn)中的,用來自動獲取變量的類型。
好了,接下來進行編譯運行:
[cpp]?view plaincopy提示錯誤:‘c’變量沒有類型,范圍for循環(huán)不允許在C++98標(biāo)準(zhǔn)中使用
這是因為GCC/G++默認的-std(即C++語言標(biāo)準(zhǔn))不是C++11,在這里默認的是C++98,所以需要顯式地開啟,即添加-std=c++11選項:
[cpp]?view plaincopy編譯成功!!!運行以后輸出some string的大寫形式!
總結(jié)
以上是生活随笔為你收集整理的哪个版本的gcc才支持c11的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 04-VUE 常用指令最佳实践
- 下一篇: win10总出现繁体字怎么关闭