無論開發什麼程序或者編制什麼代碼,但要確定的是C++程序必須有C++ main()函數,C++ main()函數是C++程序的入口點。但是,並非所有C++程序都有傳統的C++ main()函數,因為它們通常不使用返回值。
C++ main()函數和其它函數一樣是函數,有相同的構成部分。在32位控制台應用程序中,C++ Builder生成具有下列原型的缺省C++ main()函數:int main(int argc,char** argv);這個main()函數形式取兩個參數並返回一個整型值。
前面說過,數值在調用函數時傳遞給函數。但對於C++ main()函數,沒有直接調用,而是在程序運行時自動執行。那麼,C++ main()函數如何取得參數呢?辦法是從命令行取得。現說明如下:假設有個Win32控制台應用程序要在DOS提示下用下列命令行執行:grep WM_KILLFOCUS 杁 -i
這裡要用命令行變元WM_KILLFOCUS、d和i啟動程序grep,我們要演示如何在C++ main()函數中將其變為argc和argv.首先,整型變量argc包含命令行中傳遞的參數個數,至少為1,因為程序名也算作參數。變量argv是個數組,包含字串的指針。這個數組包含命令行中傳遞的每個字串。本例中:
- 1: #include <iostream.h>
- 2: #include <conio.h>
- 3: #pragma hdrstop
- 4:
- 5: int main(int argc,char **argv)
- 6: {
- 7:cout << "argv = "argc << end1;
- 8.for (int i=0;i<argc;i++)
- 9. cout << "Parameter " << i << ": " << argv[i]<< end1;
- 10. cout << end1 << "Press any key to continue...";
- 11: getch();
- 12: return 0;
- 13: }
將這個項目存為Argstest,然後不是單擊Run按鈕,而是選擇主菜單中的Project|Build All,這樣只建立項目而不執行程序。項目建成後,選擇主菜單中的Run|Parameters,在RunParameters對話框RunParameters字段中輸入下列內容:one two three "four five" six然後單擊Run按鈕。
程序即用所指定的命令行參數運行。另一種辦法是用下列命令行在DOS提示下運行程序:argstest one two three "four five" six程序運行時,它會顯示傳入的變元數,然後列出每個變元。運行幾次,每次提供不同命令行變元,注意產生的結果。 大多數程序中C++ main()函數的返回值並不重要,因為通常不使用返回值。事實上,可以不要求C++ main()函數返回數值。C++ main()函數的形式有多種,下列聲明均有效:
- int main(void); // same as above
- int main(int argc,char** argv);
- void main();
- void main(int argc, char** argv);
還有更多的形式。如果不想使用命令行變元,則可以用第一種C++ main()函數形式,其不取參數括號內為空的)並返回一個int(不指定時返回缺省返回值)。換句話說C++ main()函數最基本的形式不取參數並返回一個int。