C/C++標准有哪些?


                    1. C
時間 名稱 標准制定組織 事件
1978 K&R標准 K&R
《The C Programming Language》
 
author: K&R
1989 ANSI C / C89 ANSI ANSI通過C語言標准
1990 C90 ISO & IEC ISO&IEC將C89標准定為C語言國際標准
1994 C94 ISO & IEC ISO&IEC發布C89標准修訂版,即C94
1995 C95 ISO & IEC ISO&IEC發布C94標准修訂版,即C95
1999 C99 ISO & IEC ISO&IEC發布C語言新標准,即C99。這是C語言第二個標准
2011 C11 ISO & IEC ISO&IEC發布C語言新標准,即C11。這是C語言第三個標准
                     
        C標准庫 實現
                        1). GNU/Linux版實現:glibc.so(注:Linux中被重命名為libc.so。原因:所有Linux庫都必須以lib前綴打頭)
                        2). Mac和iOS實現:
                                        Mac中,C標准庫的實現是libSystem(/usr/lib/libSystem.dylib)的一部分;
                                        iOS可以使用 iOS SDK來訪問標准庫;
                        3). Windows版實現:
                                        在Windows上,標准庫的實現一直嚴格限定在 Visual Studio中,它是微軟官方編譯器。他們通常稱之為C/C++運行時庫(CRT),並且它涵蓋了C/C++二者的實現。名為 CRTDLL.DLL。
                                        從 Windows 95開始,Microsoft開始將其遷移到MSVCRT[版本號].DLL之上。例:MSVCR71.DLL
                                        在1997年左右,他們決定將文件名簡化為MSVCRT.DLL,這導致了  DLL混亂。因此從 Visual Studio 7.0開始,他們切換回每個版本使用單獨的DLL了。
                                        Visual Studio 2015引入了深度 CRT 重構。C/C++ 標准庫的實現遷移到一個新庫, Universal C運行時庫(Universal CRT 或 UCRT),編譯為 UCRTBASE.DLL。
                        4). Android版實現:
                                        Bionic是Google為其Android操作系統所編寫的C標准庫實現,它直接在底層使用。第三方開發者可以通過Android NDK訪問 Bionic,Android NDK允許開發者使用 C/C++代碼編寫Android應用程序。
 
 
                      2. C++ 
時間 名稱 標准制定組織 事件
1998 C++ 98 標准 ISO & IEC

1998年C++標准得到ISO和ANSI批准。

以后每5年視實際需要更新一次。

2003 C++ 03 標准 ISO & IEC 2003年通過了C++標准第二版。
2011 C++ 11 標准 ISO & IEC

2011年發布了C++標准第四版C++ 11,取代現行的C++ 98 和 C++ 03。

此次標准為 C++ 98發布13年來第一次重大修正。

2014 C++ 14 標准 ISO & IEC

2014年發布了C++標准第四版C++ 14,

是 C++ 11的增量更新。

                     
        C++標准庫 實現
                        1). GNU/Linux版實現:libstdc++
                        2). Mac和iOS實現:
                                        Mac中,Mac OS < V10.9, libstdc++是默認選項;Mac OS >= V10.9,使用 libc++(注1:這是LLVM項目所引人的 GNU libstdc++ 的替代;注2:LLVM是Mac官方編譯器框架)
                                        iOS可以使用 iOS SDK來訪問標准庫;
                        3). Windows版實現:
                                        在Windows上,標准庫的實現一直嚴格限定在 Visual Studio中,它是微軟官方編譯器。他們通常稱之為C/C++運行時庫(CRT),並且它涵蓋了C/C++二者的實現。名為 CRTDLL.DLL。
                                        從 Windows 95開始,Microsoft開始將其遷移到MSVCRT[版本號].DLL之上。例:MSVCR71.DLL
                                        在1997年左右,他們決定將文件名簡化為MSVCRT.DLL,這導致了  DLL混亂。因此從 Visual Studio 7.0開始,他們切換回每個版本使用單獨的DLL了。
                                        Visual Studio 2015引入了深度 CRT 重構。C/C++ 標准庫的實現遷移到一個新庫, Universal C運行時庫(Universal CRT 或 UCRT),編譯為 UCRTBASE.DLL。
                        4). Android版實現:
                                        對C++標准庫,Android NDK提供了很多版本的實現:
                                            libc++。從 Lollipop 開始的官方安卓系統和現代 Mac OS 都將其作為 C++ 標准庫使用。從NDK v17開始,它將成為NDK中唯一可用的 C++ 標准庫實現。
                                            gnustl。libstdc++的別名,這兩者在GNU/Linux中同一個庫。該庫已被棄用,它將在NDK v18中刪除。
                                            STLport。由STLport項目編寫的C++標准庫的第三方實現,自2008年開始一直處於不活躍狀態。與gnustl一樣,STLport將在NDK v18種移除。
 
 
補充重點:C++與C的不兼容
            1. 最常見的差異之一是,C 允許從 void * 隱式轉換到其他指針類型,但C++不允許。
            2. 另一個常見的可移植問題是,C++重新定義了關鍵字,如 new, class,它們在C程序中可以作為識別字(例:變量名)的。
            3. 在C標准(C99)中去除了一些不兼容之處,也支持了一些C++的特性,如注解,以及在代碼中混合聲明。不過C99也納入了幾個和C++沖突的特性(如:可變長度數組、原生復數類型和復合逐字常數)。
 
            若要混用C和C++的代碼,則所有在C++中調用的C代碼,必須放在 extern “C”{/*C代碼*/}內。
 
參考資料:
             C標准和C++標准


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM