【C++】実行までの流れ
実行ファイルの作成
テキストファイル
Javaとは異なり、クラス名とファイル名が違っても良い。
プリプロセス
代表的に#includeディレクティブがあり、プリプロセッサが#includeで指定したファイルをコピー&ペーストしてくれる。
極端な例ではあるが、以下の場合、プリプロセッサが※の箇所にPreprocess.hをペーストしてくれる。
Preprocess.h
}
Main.cpp
#include <iostream>
int main(){
std::cout << "Test" << std::endl;
#include "Preprocess.h" // ※
プリプロセスの結果のファイルは*.iファイルで、プロジェクトのプロパティ>[構成プロパティ]>[C/C++]>[プリプロセッサ]>[ファイルの前処理]を"はい(/P)"に指定すると出力される。コンパイル
コンパイル時にエラー(コンパイルエラー)が発生した場合のエラーメッセージはC~
コンパイルされた結果は*.objファイルとして出力される。
ファイルを保存後"Ctrl+F7"でコンパイルすることが可能。
バイナリ形式の一歩手前のアセンブリファイルを出力するためには、プロジェクトのプロパティ>[構成プロパティ]>[C/C++]>[出力ファイル]>[アセンブリの出力]を"アセンブリコードのみ(/FA)"に指定
リンキング
コンパイルに記載の通り、C++は分割コンパイルであり、コンパイル結果の各オブジェクトファイルは他のオブジェクトのことが分からない。
そこで、リンカがグローバル変数や関数の呼び出し参照を結合する。
リンキングが失敗した際のエラー(リンキングエラー)が発生した場合のエラーメッセージはLNK~
エントリーポイント(main関数)
特殊な関数で、戻り値がint型であるが、returnしなくても良い。