新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > main函數(shù)的標(biāo)準(zhǔn)定義

        main函數(shù)的標(biāo)準(zhǔn)定義

        作者: 時(shí)間:2012-05-30 來源:網(wǎng)絡(luò) 收藏

        學(xué)過C語言的人都知道,是程序啟動的入口,每一個C語言程序里有一個,在程序里它是唯獨(dú)一個不能被其他函數(shù)調(diào)用的特殊函數(shù)。在眾多的單片機(jī)C語言編譯器里對函數(shù)的寫法都沒有明確的要求,寫法非常自由,可以寫成帶形參的函數(shù),也可以寫成無形參的函數(shù),還可以寫成返回值為任意數(shù)據(jù)類型的函數(shù)。通用的寫法都是:void main () {…}。而根據(jù)C99的要求,main函數(shù)是一個有返回值的函數(shù),而且返回值類型必須為int。下面這段英文描述是從C99的PDF文檔上復(fù)制下來的:

        本文引用地址:http://www.104case.com/article/171395.htm

        5.1.2.2.1 Program startup

        The called at program startup is named main.The implementation declares no

        prototype for this .It shall be defined with a return type of int and with no

        parameters:

        int main(void) { /* ... */ }

        or with twoparameters (referred to here as argc and argv,though anynames may be

        used, as theyare local to the in which theyare declared):

        int main(int argc, char *argv[]) { /* ... */ }

        or equivalent;9)or in some other implementation-defined manner.

        從C99的規(guī)定里可以看出,main函數(shù)的標(biāo)準(zhǔn)一般為這兩種形式:

        第一種形式:

        int main (void)

        {

        ……

        return 0;

        }

        第二種形式:

        int main (int argc, char *argv[ ])

        {

        ……

        return 0;

        }

        第一種main函數(shù)不帶形參,寫起來比較簡便。編寫單片機(jī)C語言程序是不需要通過操縱系統(tǒng)向main函數(shù)傳遞參數(shù)的,所以筆者推薦采用第一種標(biāo)準(zhǔn)。

        標(biāo)準(zhǔn)的意義在于通用,對C語言來講,符合標(biāo)準(zhǔn)意味著代碼的可移植好。如果main函數(shù)不符合C99標(biāo)準(zhǔn)也沒關(guān)系,只要編譯器支持,對您的程序沒有任何影響。到目前為止,沒有哪個C編譯器完全遵循C99標(biāo)準(zhǔn),這都是為了讓編譯器兼容以前的代碼,這也是為什么C標(biāo)準(zhǔn)十幾年才修改一次的原因。當(dāng)然,這并不代表新標(biāo)準(zhǔn)形同虛設(shè),從發(fā)展趨勢來看,C編譯器都會逐漸向新標(biāo)準(zhǔn)靠攏。

        既然有了標(biāo)準(zhǔn)我們就應(yīng)該遵循。我們可以用權(quán)威標(biāo)準(zhǔn)來衡量一個代碼的優(yōu)劣,去批判“另類”代碼,寫出標(biāo)準(zhǔn)的C代碼,提高代碼的可移植性。



        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 新兴县| 蕉岭县| 英德市| 凉山| 麻阳| 武冈市| 和林格尔县| 巴林左旗| 福贡县| 襄城县| 墨竹工卡县| 德庆县| 德格县| 民丰县| 库尔勒市| 黄浦区| 邓州市| 枣庄市| 仙游县| 南乐县| 浦江县| 辽阳县| 左权县| 林周县| 利川市| 仙居县| 临猗县| 宝兴县| 大田县| 青龙| 阳谷县| 托里县| 宁都县| 吐鲁番市| 东台市| 齐河县| 宝鸡市| 迭部县| 定襄县| 灌云县| 白山市|