※ 引述《noguest.bbs@ptt.cc (guest)》之銘言:
> ※ 引述《leicheong.bbs@bbs.sayya.org (理昌)》之銘言:
> : 可是需要留意一點, 在VC系列的compiler, optimization預設是關閉的(/Od).
> : 需要手動打開.
> : 因為 (尤其是在寫多線程的程式時) 打開optimization會有一定機會出現
> : 「平常跑時會出現可重複的問題, 而在debug模式中卻不會出現」這種
> : 令人頭痛的情況. (Overoptimization)
> : 好像部份gcc compiler也有這種情況. (我不太用gcc因此詳細情況不清楚)
> : 這樣在討論時是否以沒有optimization下的情況來討論比較正當呢?
> 這和 complier 的預設沒有什麼關係, 和目的比較有關. 若只是在討論
> 程式的正確性, 使用 debug 模式是沒問題. 但若是在比較執行的速度,
> 比 debug (或 -g) 的程式就沒有意義,畢竟產生出來的 code 並不是以
> 效率為考量.
> 事實上, 真正的要比較速率, 除了使用 -O (或 /Od) 外, 正確的作法是還要
> 加上 profiling, 如此才能真正的反映最好的執行效率.
現在談的是coding practice吧. (是否應該把所有#define轉成const宣告)
假設你每個新project都會手動打開optimization好了, 但如果coding
中途遇上了不關上optimization就不能workaround的情況, 難到你要
到這時候才大修嗎?
不過其實不大修也沒關係, 只是產生出來的程式碼大一點而已.
P.S.: 我不是不知道用const的好處, 我所提出來的都僅是圍繞
「把所有#define都轉成const是一種錯誤的想法」而「不是」
「(在任何情況下)#define比const宣告好」.
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: ip-84-126-134-202.rev.dyxnet.com