C++(標準庫):01---C++標準的歷史

一、C++標準的歷史

  • C++標準初始於1989年,由國際標準化組織(ISO)推動。ISO其實是一個大羣國家標準組織,成員機構包括美國的ANSI
  • 下面是C++標準的發展歷程:
    • ①C++98:於1998年批准,是第一份C++標準規則
      • 官方名稱是Inforamtion Trchnology-Programming Languages-C++,文檔編號ISO/IEC 14882:1998
    • ②C++03:這是個所謂“技術勘誤”(technical corrigendum,TC),內含不甚嚴重的C++98 bug修正
      • 文檔編號ISO/IEC 14882:2003.不論C++98或C++03都被視爲“第一份C++標準規則”
    • ③TR1:內含大幅度的標準庫擴充。它所涵蓋的擴充全部包含於namespace std::tr1內
      • 官方名稱是Information Technology-Programming Languages-technical Report onC++ Library Extensions。文檔編號ISO/IEC TR 19768:2007
    • ④C++11:批准於2011年,是第二份C++標準。C++11內含語言和標準庫兩方面皆十分重要的改善和強化,而TR1所做的擴充也被納入稱爲namespace strd的一部分
      • 官方名稱又一次是Inforamtion Trchnology-Programming Languages-C++,新的文檔編號ISO/IEC 14882:2011
      • C++11這一標準長時間被稱爲“C++0x”,帶着一種“將於2009年前完成”的大衆期待,所以不論C++11還是C++0x,其實都是同一份東西,一律稱之爲C++11
    • ⑤C++17/C++20

二、關於C++11 標準的常見疑問

哪裏可以獲得這份標準

  • 最近的一份免費的C++11 standard草案,文檔名稱是N3242。這份草案應該足夠滿足大多數用戶和程序員,但如果你需要真正的標準規格書,必須付費給ISO或某個國屬機構

爲什麼C++11較前一版本之間距離這麼久

  • C++11標準化過程花費了10年甚至不止,這是許許多多個人和公司的努力成果,這些努力包括提出改善和擴充建議
  • C++的另一個目標是簡化事情,爲此C++11引進了許多提案

三、C++98和C++11的兼容性

  • C++11的設計目標之一,是對C++98保持向後兼容
  • 一些注意事項:
    • 但是有一些舊版本的東西在C++11中仍然不可以編譯通過:例如變量名無論如何也不可以和新導入的關鍵詞相同
    • 向後兼容僅適用於源碼,不保證二進制兼容,因爲那會導致問題,特別是當一個原有操作取得一個新式返回類型,因爲“基於返回類型而形成的重載”是不被允許的(這適用於某些STL算法及STL容器的某些成員函數)
    • 所以請以C++11編譯器重新編譯C++98程序的每一份源碼,包括用到的所有程序庫——通常都會成功。若以C++11編譯器產生的二進制碼鏈接C++98編譯器產生的二進制碼,則可能會失敗

相關編譯宏

  • 下面是C++11的編譯宏,如果你的程序使用的是C++11的語法,那麼可以在編譯之前加上這個宏
#define __cplusplus 201103L
  • C++98和C++03的宏則是:
#define __cplusplus 199711L
  • 注意:不同的編譯器這個宏的值可能不同 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章