C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

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");
}

ここまで