祝49回 C言語ならあっしに聞け
■ このスレッドは過去ログ倉庫に格納されています
0220デフォルトの名無しさん
NGNG言い方が悪かったかもしれん。
const float PI は変数としての記憶領域を必ず使うが、#defineの場合
はマクロなので、変数としての記憶領域は使わない。しかし出てくる
度にコードが少しずつ長くなっていく可能性があると言いたかった。
floatの例だとわかりにくいが、char *s = "hogehogehoge"; などの例を
考えてみればわかりやすい。これと #define s "hogehogehoge"を比較
してみれば、*sの方は "hogehogehoge" がメモリのどこかに確保される
が、一度しか確保しない。それに比べて#define sの方は、一度も使わな
ければ確保されないが、もし使うと使う度にメモリを消費していく。
コンパイラによっては同一の文字列リテラルはマージする場合もあるから
一概には言えないが。
■ このスレッドは過去ログ倉庫に格納されています