main
関数とプログラム実行
すべての C プログラムには、main
という名前を付ける必要のある主要な関数があります。 main
関数は、プログラム実行の開始点として動作します。 通常は、プログラム内の他の関数への呼び出しを指示することによって、プログラムの実行を制御します。
他の C 関数には適用されない複数の制限が main
関数に適用されます。 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
を使用することもできます。 wmain
に対する argv
および envp
パラメーターも、char**
型として定義できます。 引数の詳細については、「引数の説明」を参照してください。
Remarks
ソース プログラム内の関数は、1 つ以上の特定のタスクを実行します。 main
関数は、これらの関数を呼び出して、それぞれのタスクを実行することができます。 main
が別の関数を呼び出すときは、その関数の最初のステートメントから実行が開始されるように、その関数に実行制御を渡します。 関数は、return
ステートメントが実行されたとき、または関数の終わりに達したときに、main
に制御を戻します。
main
も含めて、任意の関数を、パラメーターを持つように宣言できます。 "パラメーター" または "仮パラメーター" という用語は、関数に渡された値を受け取る識別子を指します。 パラメーターに引数を渡す方法については、「パラメーター」を参照してください。 ある関数が別の関数を呼び出すとき、呼び出される関数は呼び出す関数からパラメーターの値を受け取ります。 これらの値は、"引数" と呼ばれます。 main
には、コマンド ラインから引数を受け取れるように、関数シグネチャに示されている形式を使用して仮パラメーターを宣言できます。
main
関数に情報を渡す場合、パラメーターの名前は従来から argc
および argv
になっていますが、C コンパイラでこれらの名前でなければならないとされているわけではありません。 従来、main
に 3 番目のパラメーターが渡される場合、その名前は envp
とされています。 argc
、argv
、envp
の型は、C 言語によって定義されています。 argv
を char** argv
、envp
を char** envp
として宣言することもできます。 このセクションで後から示す各例で、これら 3 つのパラメーターを使用してコマンド ライン引数にアクセスする方法を説明します。 以降のセクションでは、これらのパラメーターについて説明します。
コードが Unicode プログラミング モデルに準拠する場合、プログラムのエントリ ポイントとして、main
の Microsoft 固有のワイド文字バージョンである wmain
を使用できます。 この main
のワイド文字バージョンの詳細については、「wmain
の使用」を参照してください。
main
の終了
プログラムは通常、main
から戻るかその終わりに達した時点で停止しますが、さまざまな理由により、プログラムのその他の場所で終了する場合もあります。 たとえば、何らかのエラー状態が検出されたときにプログラムを強制的に終了することができます。 そのために、exit
関数を使用できます。 exit
の詳細と使用例については、exit
に関するページを参照してください。