官术网_书友最值得收藏!

1.4.2 編譯器

編譯器及其相關運行庫的選擇對程序的安全有著重大的影響。本書中的例子主要針對Windows上的Visual C++和Linux上的GCC兩款編譯器,下面對它們稍作介紹。

Visual C++。微軟的Visual C++是Windows平臺上占據優勢地位的C和C++編譯器。Visual C++實際上是一個編譯器產品的家族,其中包括Visual Studio 2012、Visual Studio 2010、Visual Studio 2008、Visual Studio 2005以及更早的版本。這些版本均廣泛使用,它們提供的功能各有不同,包括其提供的安全特性也是如此。大體來說,越新的編譯器版本提供的安全特性就越多、越高級。以Visual Studio 2012為例,包括對C++11標準的改進支持。

GCC。GCC全稱是GNU編譯器集(GNU Compiler Collection),其中包括C、C++、Objective-C、Fortran、Java、Ada,以及這些語言對應的庫。GCC編譯器是Linux平臺上的主流C和C++編譯器。

GCC支持3個版本的C標準:C89、AMD1和C99。默認情況下,GCC遵循ANSI(ISO C89)標準并加上GNU特有的一些擴展。GCC編譯器提供了一個-std標志,該標志允許用戶在編譯C程序時指定希望遵循的標準。目前,GCC編譯器尚不完全支持C99規范,有幾個列出的特性遺失或損壞 [1]。GCC也對C11標準提供有限的、不完整的部分支持。

[1] 詳情參見http://gcc.gnu.org/c99status.html。
主站蜘蛛池模板: 汨罗市| 聂荣县| 红河县| 东源县| 宾川县| 岚皋县| 彰武县| 宝山区| 桐柏县| 昌宁县| 布尔津县| 苏尼特右旗| 增城市| 中卫市| 土默特左旗| 汽车| 武威市| 讷河市| 德安县| 苗栗县| 原平市| 临潭县| 五大连池市| 昌都县| 汶川县| 铜梁县| 盘山县| 安吉县| 广宗县| 武强县| 锦屏县| 衡山县| 綦江县| 朝阳县| 巴青县| 孝昌县| 九寨沟县| 桦甸市| 丹棱县| 南靖县| 和政县|