【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20662

ヘッダファイルの#defineを修正したら再コンパイル必要?
投稿者---abs(2005/04/18 00:17:28)


ヘッダファイル中の定義を変更した場合
(例) #define TEST (10) を (20)に変更
は、ヘッダを使用しているソース(.c)ファイルは
再コンパイルは必要でしょうか?
それとも必要なし(リンク時に埋め込まれるのでオブジェクトファイルは影響しない)でしょうか。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ヘッダファイルの#defineを修正したら再コンパイル必要? 20663 RAPT 2005/04/18 00:29:31


No.20663

Re:ヘッダファイルの#defineを修正したら再コンパイル必要?
投稿者---RAPT(2005/04/18 00:29:31)


>(例) #define TEST (10) を (20)に変更
これに依存関係があるソースはすべて再コンパイルが必要です。

>リンク時に埋め込まれるのでオブジェクトファイルは影響しない
なぜ?
#define はプリプロセッサなので、コンパイルの前処理で評価されます。
  前処理→コンパイル→リンク
という処理順のため、「リンク時に埋め込まれる」なんてことはありえません。

int a = TEST;
とあったとき、プリプロセスで、
int a = (10);
と処理されます。コンパイルの段階では、すでにTESTという識別子は
跡形もありません。ましてやリンク時には全くかかわりがありません。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧