検索
[C]コンパイルエラーとリンクエラー
- M.R

- 2023年1月7日
- 読了時間: 1分
概要
前回、コンパイルとリンクについて説明しました。
今回は、それを元にコンパイルエラーとリンクエラーについて説明します。
コンパイルエラー
コンパイルで行われるのは
1 コードのバイナリ化
2 あるものリスト、欲しいものリストの作成
でした。これでエラーとなるのは以下のような場合です。
1 コードがバイナリ化できない(つまり構文が規則通りでない、など)
2 あるものリストが作れない(つまり関数の宣言がされていない)
です。実は関数の定義はなくてもコンパイルはできます。(エディタが気を利かせてエラーにしてくれる場合も多いですが)
リンクエラー
一方、リンクで行われるのは
1 関数のアドレスの決定
2 関数呼び出しを、その関数コードのアドレスへのジャンプへ置き換え
でした。これがエラーとなるのは、2の置き換えができない場合です。移動先のアドレスが存在しない、つまり関数定義がない場合ですね。
まとめ
関数の定義がないのか、宣言がないのかはどちらのエラーが出ているかで分かりますね。
![[C]動的リンクとは](https://static.wixstatic.com/media/90b712_18dcd348ceaf4fea8585e60a08091a5f~mv2.png/v1/fill/w_980,h_538,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/90b712_18dcd348ceaf4fea8585e60a08091a5f~mv2.png)
![[C]コンパイルとリンク](https://static.wixstatic.com/media/90b712_569065324fdf4898bb183b7f8441865f~mv2.png/v1/fill/w_980,h_633,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/90b712_569065324fdf4898bb183b7f8441865f~mv2.png)






コメント