每個 C 程式都有一個必須命名 main為 的主要函式。 函 main 式可作為程序執行的起點。 它通常會透過直接呼叫程式中的其他函式,以控制程式的執行。
數個限制適用於 main 不適用於任何其他 C 函式的函式。
main 函式:
- 無法宣告為
inline。 - 無法宣告為
static。 - 無法取得自己的位址。
- 無法從您的程式呼叫。
main 函式簽章
main 函式沒有宣告,因為該函式內建於語言中。 如果這樣做,main 的宣告語法看起來會像這樣:
int main( void );
int main( int argc, char *argv[ ] );
int main( int argc, char *argv[ ], char *envp[ ] );
函 main 式是使用下列其中一個簽章隱含宣告。 當您定義函 main 式時,您可以使用其中任何一個簽章。 Microsoft編譯程式也允許 main 在未傳回任何值時,具有的 void 傳回型別。 和 argvenvp 參數 wmain 也可以定義為 型別 char**。 如需自變數的詳細資訊,請參閱 自變數描述。
備註
原始程式中的函式會執行一個或多個特定工作。 函 main 式可以呼叫這些函式來執行其各自的工作。 當呼叫另一個函式時 main ,它會將執行控件傳遞至函式,讓執行會在函式的第一個語句開始。 函式會在執行語句或到達函式結尾時,傳回 控件mainreturn。
您可以宣告任何函式,包括 main,以具有參數。 詞彙「參數」或「型式參數」是指接收傳遞給函式之值的識別項。 如需將引數傳遞給參數的相關資訊,請參閱參數。 當某個函式呼叫另一個函式時,被呼叫的函式會從呼叫函式收到其參數的值。 這些值稱為引數。 您可以宣告正式參數, main 使其可以使用函式簽章中顯示的格式,從命令行接收自變數。
當您想要將資訊傳遞至 main 函式時,參數傳統上會命名 argc 為 和 argv,不過 C 編譯程式不需要這些名稱。 傳統上,如果第三個參數傳遞至 main,該參數就會命名為 envp。 、 argc和 argv 的類型envp是由 C 語言所定義。 您也可以將 與宣告 argv 為 char** argvenvpchar** envp。 本節稍後的範例將說明如何使用這三個參數存取命令列引數。 下列各節會說明這些參數。
如果您的程式代碼遵守 Unicode 程式設計模型,您可以使用 Microsoft 特定寬字元版本的mainwmain、 作為程式的進入點。 如需這個寬字元版本 main的詳細資訊,請參閱 使用 wmain。
main 終止
程式通常會在從 傳回 或 到達 結尾 main時停止執行,但可能會因為各種原因而終止於程式中的其他點。 例如,偵測到某些錯誤狀況時,您可能會想要強制終止程式。 若要這樣做,您可以使用 函式 exit 。 如需使用 exit 方式和範例的詳細資訊,請參閱 exit。