C++ main関数とスタートアップルーチン 書いて覚えるための初心者自己中記事
プログラムはmain関数が最初に呼び出される
main関数の戻り値は必要なのか?
main関数を呼び出しているのは誰か?
main関数はスタートアップルーチンが呼び出している。
main関数の戻り値はスタートアップルーチンが求めている。
main関数が最初に呼び出されるとは言うが、その前にグローバル変数の動的初期化、main関数の終了後に全静的変数の終了処理などが行われる。
それらもスタートアップルーチンが行っている。
スタートアップルーチンはmain関数が正常に終了したのか異常に終了したのかが知りたい。それをmain関数は戻り値として返す。
main関数の戻り値の型はint 型。
これは
EXIT_SUCCESS == 0
EXIT_FAILURE == 1
として渡されるのでint型。
スタートアップルーチンを概念的に表したら
void StartUp(){
Initialize( );
exit ( main ( ) ) ;
}
こんな感じになるらしい。
system関数について
system関数は引数に指定したプログラムを実行する関数。
実行形式のファイル名を引数に入れて実行させることが出来る。
それを使って実行したファイルの戻り値を取得してみる。
#ifdef WINDOWS #define CURRENT #else #define CURRENT "./"/*windows以外の環境ではファイル名の前に./を付けないとダメな場合がある*/ #endif const char FILENAME[] = CURRENT "Main1"; int main() { if (system(FILENAME) == 0) { cout << "プログラムは正常に実行されました。" << endl; return EXIT_SUCCESS; } else { cout << "実行に失敗しました。" << endl; return EXIT_FAILURE; } //system("pause"); }
ここまで