※ 引述《qrtt1 (foolish)》之銘言:
> ※ 引述《tomhuang (阿培仔)》之銘言:
> > 最近寫了個程式,裡面我用了滿多 #define 來宣告一些常數,
> > 可是後來在 debug 時發現,#define 的常數沒辦法看到內容,
> > 在 Linux 中的 gdb 可以用 macro exp SOME_CONSTANT 展開,
> > 可是還是滿麻煩的,它只是展開而不做計算...所以看到一些
> > 四則運算式。
> > 後來我想到有聽人家講過,最好是用 const 來代替 #define,
> > 現在想把程式做個翻修,把 #define 全換成 const。
> > 請問大家,要用 const 取代 #define 的話,一般是放在 header
> > 裡面嗎?還是放在 *.c 裡面呢?
> 您應該先思考scope要多大啊
> many file?
> file?
> function?
本來那些 #define 是寫在 .h 裡面的,所有的 .c 都會引入它,
剛剛試著把其中幾個,如:
#define IN_WIDTH 320
#define IN_HEIGHT 240
#define BLEED_WIDTH 30
#define BLEED_HEIGHT 20
#define OUT_WIDTH (IN_WIDTH - BLEED_WIDTH * 2)
#define OUT_HEIGHT (IN_HEIGHT - BLEED_HEIGHT * 2)
改成:
typedef unsigned short u16;
const u16 IN_WIDTH = 320;
const u16 IN_HEIGHT = 24;
const u16 BLEED_WIDTH = 30;
const u16 BLEED_HEIGHT = 20;
const u16 OUT_WIDTH = (IN_WIDTH - BLEED_WIDTH * 2);
const u16 OUT_HEIGHT = (IN_HEIGHT - BLEED_HEIGHT * 2);
最後兩個有錯誤訊息:
error: initializer element is not constant
可是把那幾行拷到 function 裡面,好像就沒有錯誤訊息...
是不是 global 和 local 的寫法不一樣呢?
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: 140.124.70.251