[前へ]   [目次へ]   [次へ]

エラーと警告(2)(C/C++)


前回に引き続きエラーと警告についてです。

エラーには大きく分けて「コンパイルエラー」と「リンクエラー」があります。

今まで「ソースファイルから実行可能ファイルを作ること」を「コンパイル」と言っていましたが、
これは広義の意味で、C言語ではもう少し細かい意味でも「コンパイル」と呼ぶものがあります。
細かい意味の「コンパイル」は、オブジェクトファイルというものを作るまでを指します。
実行ファイルにするにはさらに「リンク」という手順が必要です。

C言語のコンパイラは普通「リンク」を行う「リンカ」も備えています。

同じ言葉に意味がいくつもあると紛らわしいので、分けて呼ぶ時には
細かい意味のコンパイル、リンクを行って実行ファイルを作るまでの一連の動作の方を「ビルド」とか「make」などと呼びます。
例えばVisual C++6.0の場合、「コンパイル」と「ビルド」の二つのコマンドがあります。
ここでの「コンパイル」は細かい意味の方なので、実行ファイルはできません。
実行ファイルを作る時は「ビルド」の方を使います。


以降、「コンパイル」は細かい意味を指すことにします。
広義のコンパイルは「ビルド」と呼ぶことにします。


コンパイルとリンクが分かれているのはC/C++言語で複数のソースファイルを使う時に効率を上げるためです。
C/C++言語はソースファイルごとにコンパイルを行い、最後にリンクで全てを結合します。
変更していないソースファイルは再度コンパイルを行うことなく前回のコンパイルでできたオブジェクトファイルを使うことができます。


さて、「コンパイルエラー」はコンパイル時に、
「リンクエラー」はリンク時に発生したエラーのことです。

といっても、大半のエラーはコンパイル時に発生するため、「リンクエラー」は珍しい部類に入ります。
例えば宣言だけで定義されていない項目があった場合、リンクする時にどこかに定義がなければいけませんが、
どこにも定義が見つからない時にリンクエラーが発生します。

次回に続きます。

[前へ]   [目次へ]   [次へ]

プログラミング講座 総合目次

最終更新 2008/10/17