我們常在書本夹厌、網(wǎng)頁中看到ANSI C的字眼稽揭,它到底指什么意思呢?
ANSI C嚴格來說浪蹂,應當是指美國國家標準學會(ANSI)對C語言發(fā)布的標準抵栈。但實際上,ANSI只在1989年發(fā)布過C語言的標準乌逐,后面的C語言標準都是由國際標準化委員會(ISO)和國際電工委員會(IEC)審定和發(fā)布竭讳。
既然ANSI只在1989年發(fā)布過C語言的標準,那為什么現(xiàn)在還經(jīng)常使用ANSI C呢浙踢,難道我們還在使用C89標準嗎绢慢?不是的,我們今天使用的是由ISO/IEC發(fā)布的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)的縮寫,它由公司糟描、政府和其他成員組成的自愿組織怀喉,它們協(xié)商與標準有關的活動,審議美國國家標準蚓挤,并努力提高美國在國際標準化組織中的地位磺送,是國際標準化委員會(ISO)和和國際電工委員會(IEC)常任理事成員之一。
1983年灿意,ANSI根據(jù)C語言問世以來各種版本對C的發(fā)展和擴充估灿,制定了C 的第一個標準,并于1989年發(fā)布缤剧。這個標準被稱為C89標準馅袁,也稱作ANSI C。1990年ISO和IEC采用了ANSI C(帶有一些小改動)為國際標準荒辕,所以C89標準又被稱為C90標準汗销。后來,ISO和IEC在1995年發(fā)布了C95標準抵窒,1999年發(fā)布了C99標準弛针,2011年發(fā)布了C11標準。
GCC(GNU Compiler Collection李皇,GNU編譯器套裝)削茁,是一套由GNU開發(fā)的編程語言編譯器。原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言茧跋。GCC很快地擴展慰丛,變得可處理C++。之后也變得可處理Fortran瘾杭、Pascal诅病、Objective-C、Java粥烁、Ada贤笆,以及Go與其他語言。