C 語(yǔ)言的標(biāo)準(zhǔn)
什么是標(biāo)準(zhǔn)?標(biāo)準(zhǔn)是對(duì)重復(fù)性事物和概念所做的統(tǒng)一規(guī)定,他以科學(xué)技術(shù)和實(shí)踐經(jīng)驗(yàn)的結(jié)合成果為基礎(chǔ),經(jīng)有關(guān)方面協(xié)商一致,由主管機(jī)構(gòu)批準(zhǔn),以特定形式發(fā)布作為共同遵守的準(zhǔn)則和依據(jù)。
在這個(gè)標(biāo)準(zhǔn)概念大行其道的今天,如果大家在生活中稍微注意一下,其實(shí)可以很容易發(fā)現(xiàn),我們生活在一個(gè)標(biāo)準(zhǔn)化的世界里,每個(gè)產(chǎn)品的外包裝或者標(biāo)簽上都會(huì)注明相應(yīng)的執(zhí)行標(biāo)準(zhǔn)。標(biāo)準(zhǔn)貫穿著我們的衣食住行。??偠灾?,標(biāo)準(zhǔn)無(wú)處不在。
當(dāng)然標(biāo)準(zhǔn)具有行業(yè)性與地域性。每個(gè)國(guó)家基本都有自己的標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)有些是自己獨(dú)立創(chuàng)造的,但更多的,為了與國(guó)際上大部分標(biāo)準(zhǔn)兼容,基本上會(huì)使用國(guó)際上一些通用的標(biāo)準(zhǔn),只是改一下名字就可以了。
作為軟件行業(yè)中的老大哥級(jí)人物。C 語(yǔ)言也有自己的標(biāo)準(zhǔn),而且是國(guó)際標(biāo)準(zhǔn)。
如果大家遵循同一個(gè)標(biāo)準(zhǔn),那么就會(huì)避免分歧的產(chǎn)生,避免出現(xiàn)很多不必要的麻煩和困擾。按照這統(tǒng)一標(biāo)準(zhǔn)就不會(huì)出現(xiàn)不兼容的問(wèn)題。
我們先來(lái)看下 C 語(yǔ)言標(biāo)準(zhǔn)的發(fā)展歷史:
1. C 語(yǔ)言標(biāo)準(zhǔn)歷史
| 序號(hào) | 別稱(chēng) | 全稱(chēng) |
|---|---|---|
| 1 | C18 | ISO/IEC 9899:2018 |
| 2 | C11 | ISO/IEC 9899:2011 |
| 3 | C99 | ISO/IEC 9899:1999 |
| 4 | C95 | ISO/IEC 9899:1990/AMD 1:1995 |
| 5 | C90 | ISO/IEC 9899:1990 |
| 6 | C89 | ANSI X3.159-1989 |
最新執(zhí)行的 C 語(yǔ)言的國(guó)際標(biāo)準(zhǔn)是序號(hào)為 1 的 C18 標(biāo)準(zhǔn)(ISO/IEC 9899:2018 (C18)),這個(gè)標(biāo)準(zhǔn)是 2018 年通過(guò)的 C 語(yǔ)言國(guó)際標(biāo)準(zhǔn)。那么 C 語(yǔ)言的標(biāo)準(zhǔn)中都規(guī)定了哪些內(nèi)容呢?下面我們一起來(lái)看下:
2. C 語(yǔ)言標(biāo)準(zhǔn)內(nèi)容
這里我將國(guó)際標(biāo)準(zhǔn)化組織最新的 C 語(yǔ)言的標(biāo)準(zhǔn)的一部分內(nèi)容放在這里,因?yàn)樗械臉?biāo)準(zhǔn)都不是免費(fèi)提供的,有興趣的同學(xué)可以購(gòu)買(mǎi)看一下全文。
那么這些標(biāo)準(zhǔn)里面都有哪些內(nèi)容呢?
因?yàn)槲也](méi)有購(gòu)買(mǎi) C 語(yǔ)言的最新標(biāo)準(zhǔn),所以我找了一點(diǎn)來(lái)自于 C 語(yǔ)言標(biāo)準(zhǔn)中描述。下面這段話(huà)就通過(guò)文字的描述,定義了有關(guān) main 函數(shù)的細(xì)節(jié):
The function called at program startup is named main. The implementation
declares no prototype for this function. It shall be defined with a return
type of int and with no parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names
may be used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;10) or in some other implementation-defined manner.
這里寫(xiě)明了 main 函數(shù)是做什么的,應(yīng)該怎么寫(xiě),包含了什么參數(shù)以及返回值等。正確的 main 函數(shù)的正確的書(shū)寫(xiě)方法應(yīng)該是 int main(void) { /* ... */ } 或者 int main(int argc, char *argv[]) { /* ... */ } 。而不是我們國(guó)內(nèi)隨處可以看到的 void main(void) {/* ... */} 或者 void main(int argc, char *argv[]) { /* ... */ }。這種寫(xiě)法在有的編譯器下是會(huì)產(chǎn)生錯(cuò)誤的,導(dǎo)致編譯無(wú)法進(jìn)行。而且這個(gè)返回值是可以輸出的,可以作為程序是否正確執(zhí)行的判斷,比如你可以用返回值 0 放在程序執(zhí)行完整后返回,返回 0 就可以判斷程序完整執(zhí)行了。如果返回了其他數(shù)值,那么程序就出現(xiàn)了異常。
由于購(gòu)買(mǎi)標(biāo)準(zhǔn)太貴了,需要 198 瑞士法郎,折合人民幣 1422.08 元,所以這里只能給大家看一點(diǎn)從其他網(wǎng)站上找到的信息。不過(guò)超過(guò) 500 頁(yè)的標(biāo)準(zhǔn)全文對(duì)于大家學(xué)習(xí)這門(mén)語(yǔ)言也沒(méi)有太大的益處。只要記住在最新的是最好的就可了。
3. 小結(jié)
標(biāo)準(zhǔn)的重要性不用過(guò)多贅述,如同大家使用的眾多版本的安卓手機(jī),和只有一個(gè)版本的蘋(píng)果手機(jī)系統(tǒng)一樣。過(guò)多的標(biāo)準(zhǔn)會(huì)讓開(kāi)發(fā)者無(wú)所適從,各自對(duì)于自己系統(tǒng)的魔改優(yōu)化,只能讓普通用戶(hù)陷入深淵。因此為了避免各自為政的情況出現(xiàn), C 語(yǔ)言很早就有了自己的標(biāo)準(zhǔn),這樣就可以完成一統(tǒng)天下的局面。雖然各個(gè)編譯器有自己的局部特點(diǎn),但是總體而言,只要是按照 C 語(yǔ)言標(biāo)準(zhǔn)編寫(xiě)的程序可以在任何一個(gè)編譯器上通過(guò)編譯。
精慕門(mén)1289550 ·
2025 imooc.com All Rights Reserved |