我們常在書本、網頁中看到ANSI C的字眼,它到底指什么意思呢?
ANSI C嚴格來說,應當是指美國國家標準學會(ANSI)對C語言發布的標準。但實際上,ANSI只在1989年發布過C語言的標準,后面的C語言標準都是由國際標準化委員會(ISO)和國際電工委員會(IEC)審定和發布。
既然ANSI只在1989年發布過C語言的標準,那為什么現在還經常使用ANSI C呢,難道我們還在使用C89標準嗎?不是的,我們今天使用的是由ISO/IEC發布的C11標準。但由于ANSI C是第一個C標準,并有巨大影響,所以ANSI C這個名字仍被廣泛使用。可以說,ANSI C就是Standard C。
GCC支持C90,不完全支持C99。在不指定C標準的情況下,GCC默認使用GNU C。GNU C = C90 + GNU Extensions = C90 + (some features in C99 + some features in C11)。默認情況下,GCC使用-std=gnu90。如果按照C99或C11標準編寫C語言程序的話,GCC編譯時需要添加編譯器選項-std=gnu99或-std=gnu11
例如使用 for(int i = 0; i < 10; i++) ... 這樣的語句,只有加上編譯器選項-std=gnu99,gcc才能編譯通過。
相關內容:
ANSI 是美國國家標準學會(American National Standards Institute)的縮寫,它由公司、政府和其他成員組成的自愿組織,它們協商與標準有關的活動,審議美國國家標準,并努力提高美國在國際標準化組織中的地位,是國際標準化委員會(ISO)和和國際電工委員會(IEC)常任理事成員之一。
1983年,ANSI根據C語言問世以來各種版本對C的發展和擴充,制定了C 的第一個標準,并于1989年發布。這個標準被稱為C89標準,也稱作ANSI C。1990年ISO和IEC采用了ANSI C(帶有一些小改動)為國際標準,所以C89標準又被稱為C90標準。后來,ISO和IEC在1995年發布了C95標準,1999年發布了C99標準,2011年發布了C11標準。
GCC(GNU Compiler Collection,GNU編譯器套裝),是一套由GNU開發的編程語言編譯器。原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴展,變得可處理C++。之后也變得可處理Fortran、Pascal、Objective-C、Java、Ada,以及Go與其他語言。