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 とされています。 argcargvenvp の型は、C 言語によって定義されています。 argvchar** argvenvpchar** envp として宣言することもできます。 このセクションで後から示す各例で、これら 3 つのパラメーターを使用してコマンド ライン引数にアクセスする方法を説明します。 以降のセクションでは、これらのパラメーターについて説明します。

コードが Unicode プログラミング モデルに準拠する場合、プログラムのエントリ ポイントとして、main の Microsoft 固有のワイド文字バージョンである wmain を使用できます。 この main のワイド文字バージョンの詳細については、「wmain の使用」を参照してください。

main の終了

プログラムは通常、main から戻るかその終わりに達した時点で停止しますが、さまざまな理由により、プログラムのその他の場所で終了する場合もあります。 たとえば、何らかのエラー状態が検出されたときにプログラムを強制的に終了することができます。 そのために、exit 関数を使用できます。 exit の詳細と使用例については、exit に関するページを参照してください。

関連項目

main 関数とコマンドライン引数 (C++)
C のコマンド ライン引数の解析