基本

プログラムの開始

main() / main関数

int main();
int main(
    int argc         // argvで渡される引数の数
    [, char *argv[ ] // コマンドライン引数
    [, char *envp[ ] // ユーザーの環境で設定された変数を表す文字列の配列 (Microsoft固有)
    ] ] );
引数定義 | MSDN
argv (コマンドライン引数)
要素 内容
argv[0] プログラムが起動されるコマンド
※プログラムからプロセスとして起動されることもあるため、実行可能ファイルの名前になるとは限らない
argv[1] 最初のコマンドライン引数
アプリケーションの実行ファイルにファイルがドロップされたときには、そのパスが引数として渡される
 
argv[argc-1] 最後のコマンドライン引数
argv[argc] NULL

処理が成功した場合には、ゼロを返すようにします。

wmain()

引数にワイド文字が渡されることを想定するなら、mainの代わりにwmainを用います。wmain の使用 | Microsoft Learn

int wmain(
    int argc
    [, wchar_t *argv[ ]
    [, wchar_t *envp[ ]
    ] ] );

プログラムの終了

int main()
{
    return 1;
}

これをsample.exeの名前のバイナリにすると、その終了コードは次のように確認できます。

C:\>sample.exe
C:\>echo %ERRORLEVEL%
1

またVisual Studioでのデバッグ時には、出力ウィンドウで「プログラム '[0x**] sample.exe' はコード 1 (0x1) で終了しました。」のように確認できます。

exit()

クリーンアップ後に、呼び出しプロセスを終了させられます。

void exit(
    int const status // 終了ステータスコード
);
終了、_Exit、_exit | MSDN

statusはmain関数の戻り値と同様に、終了コードとして処理されます。

#include <stdlib.h>

void Func()
{
    exit(1);
}

exit()の呼び出しは無条件にプロセスを終了させるため、ライブラリとして提供するようなプログラムでは用いるべきではありません。

終了コード (Exit Code)

コード 定数 説明 (日本語) 説明 (英語)
0 (0x0) ERROR_SUCCESS この操作を正しく終了しました。 The operation completed successfully.
1 (0x1) ERROR_INVALID_FUNCTION ファンクションが間違っています。 Incorrect function.
2 (0x2) ERROR_FILE_NOT_FOUND 指定されたファイルが見つかりません。 The system cannot find the file specified.
     
160 (0xA0) ERROR_BAD_ARGUMENTS 間違った引数があります。 One or more arguments are not correct.
     
System Error Codes | Microsoft Learn

参考

参考書

Microsoft Learnから検索