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

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。
主站蜘蛛池模板: 寿宁县| 天长市| 敦化市| 黎城县| 阿尔山市| 泰顺县| 富锦市| 临江市| 巢湖市| 射洪县| 武陟县| 萨嘎县| 祥云县| 漳浦县| 安西县| 监利县| 阳新县| 叙永县| 邓州市| 阿拉善左旗| 靖边县| 西华县| 房产| 上饶县| 浑源县| 石泉县| 灯塔市| 昌都县| 普陀区| 修武县| 漯河市| 色达县| 绥滨县| 宜宾县| 阿拉尔市| 廊坊市| 都昌县| 平乐县| 阳泉市| 外汇| 石门县|