<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > main函數(shù)的標準定義

          main函數(shù)的標準定義

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

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

          本文引用地址:http://www.ex-cimer.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ù)的標準一般為這兩種形式:

          第一種形式:

          int main (void)

          {

          ……

          return 0;

          }

          第二種形式:

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

          {

          ……

          return 0;

          }

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

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

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



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();