日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

哪个版本的gcc才支持c11

發(fā)布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 哪个版本的gcc才支持c11 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

而知,低版本的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
  • 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++下載并安裝完以后,測試是否安裝成功:

    [c++]?view plaincopy
  • gcc-4.8?-v??
  • g++-4.8?-v??
  • 如果顯示版本號表示安裝成功:


    安裝成功后我們?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
  • 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++??
  • 現(xiàn)在我們用gcc -v來測試就能發(fā)現(xiàn)變?yōu)榱?.8了!

    既然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
  • /*************************************************************************?
  • ????>?File?Name:?test.cpp?
  • ????>?Author:?SongLee?
  • ????>?E-mail:?lisong.shine@qq.com??
  • ????>?Created?Time:?2014年03月23日?星期日?22時29分19秒?
  • ????>?Personal?Blog:?http://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語句遍歷一個字符串,并將所有字符全部變?yōu)榇髮?#xff0c;然后輸出。其中auto類型也是C++11新標(biāo)準(zhǔn)中的,用來自動獲取變量的類型。

    好了,接下來進行編譯運行:

    [cpp]?view plaincopy
  • g++?-o?test?test.cpp??

  • 提示錯誤:‘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
  • g++?-std=c++11?-o?test?test.cpp??

  • 編譯成功!!!運行以后輸出some string的大寫形式!

    總結(jié)

    以上是生活随笔為你收集整理的哪个版本的gcc才支持c11的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。