Shammer's Philosophy

My private adversaria

#define

プリプロセッサの命令に define というのがある。

 #define VALUE 100

これを使用すると、コンパイラコンパイル前にソースコード内の「VALUE」という値を
100 に置き換えてからコンパイルする。
Javaでいうfinalによるインライン化と同じようなことをしてくれる。
つまり、定数として使いたい情報がある場合はこれを使うと便利。
Javaの入門書では final は定数だと説明があってもインライン化の話は何もなかったような。
(少なくとも自分が読んだ入門書ではない)
Javaをやり始めたころ、finalで指定した変数を他のクラスから読み取る処理があって、
final の値を変更して読み取り側のクラスをコンパイルし直さないでいて、
なぜ変更が反映されないと疑問に思っていたことがあった。
その答えがインライン化だったなぁ。。。

Cでも同様なのかな?Cの場合はヘッダファイル内で宣言した #define を変更するだけでは
ダメというようになりそうだが・・・今度時間があるときにやってみる。