我想,絕大多數程序員寫的第一個函數必定是main函數,就如同剛出生的小孩第一眼見到的是她的親媽一樣。但是,對於如此親密的main函數,我們真的是對它瞭如執掌嗎?
那可未必。在此,我寫下我淺薄的認識。
很多初學者在寫第一個C語言程序的時候,會把main函數寫成這樣:
void main()
{
.....
.....
}
我從開始學習C語言直到畢業,都是像上面那樣寫main函數。不過現在已經痛改前非了,作爲一個職業程序員,是需要嚴苛的職業精神的!大多數人像上面那樣寫main函數,就是想偷偷懶,因爲那樣在main函數執行完畢之後,就可以不用寫return語句,即不用返回任何值。但實際上根據正統的江湖規矩,main函數的必須得有返回值而且只能是int型的。標準裏面從來就沒有void main()這回事,不過有的編譯器比如vc6對於這種雜種還是網開一面的,而gcc則會給出warning: return
type of 'main' is not 'int',而g++則直接給出error: '::main' must return int。由此可見,不能因爲一時的偷懶而沒有付出代價,就從此以爲可以走遍天下,寫代碼還是得按照標準來。
那麼,main函數應該怎樣寫呢?
上面說的是,main函數必須返回int型的值。而main函數的參數,有兩種情況:一是不帶參數,寫成int main(void);二是帶參數,寫成int main(int argc, char *argv[])。另外對於main函數的返回值,return 0表示main函數正常返回。
另外,main函數被C startup程序調用如下:exit(main()) .當main函數return之後,exit函數會做一些清理工作。