關於 #define 的宣告方式 |
缺席
|
istillloving
高階會員 發表:33 回覆:182 積分:183 註冊:2008-10-09 發送簡訊給我 |
各位大大:
最近在幫我的程式運算量瘦身 過程當中我發現使用 #define 的宣告方式好像很耗時間呢 大概描述一下兩種情況 情況一 [code cpp] // 我定義了一個全域變數如下 #define lpw ((int)(StrToFloat(Form1->Edit5->Text)/2)) // 而我在某個事件內的for迴圈 // 重複使用 lpw 的這個變數 [/code] 情況二 [code cpp] // 我把 lpw 直接宣告在事件內 int lpw = ((int)(StrToFloat(Form1->Edit5->Text)/2)) ; // 同樣的迴圈數量使用這個變數 [/code] 我發現情況二的運算量比情況一的運算量少很多呢 是不是#define的變數 每呼叫一次他就重新宣告一次? 如果是的話 #define 通常用在什麼地方呢 感覺好像蠻多餘的呢 感謝各位~!!
------
恩... 編輯記錄
istillloving 重新編輯於 2010-02-28 11:40:04, 註解 無‧
|
istillloving
高階會員 發表:33 回覆:182 積分:183 註冊:2008-10-09 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
你在想什麼????
情況一: 我跟編譯器宣告了 lpw 這個”巨集”。 因為我很懶。只要編譯器你看到了 lpw 就幫我換成 這個函數。 糟了。那是不是我以後用了 lpw 就等於在程式執行了一次函數呼叫? 情況二: 我在程式中執行一次函數。然後把結果存在 lpw 這個變數。 以後我只要用到 lpw 就是直接用變數的意思。 哇靠。這樣比起來。情況一真的比情況二還耗時耶。。。。。。 這是 #define 的問題嗎? 一個取值要去執行函數,一個是直接取變數。 這是 #define 的問題嗎???? 我記得有一個工具程式叫做 cpp 的。可以把 #define 的東西,直接先幫你”代入”然後產生一個程式碼。 你可以去比對一下兩個所產生的東西。然後才會發現有何不同吧。 ===================引 用 istillloving 文 章=================== 各位大大: 最近在幫我的程式運算量瘦身 過程當中我發現使用 #define 的宣告方式好像很耗時間呢 大概描述一下兩種情況 情況一 [code cpp] // 我定義了一個全域變數如下 #define lpw ((int)(StrToFloat(Form1->Edit5->Text)/2)) // 而我在某個事件內的for迴圈 // 重複使用 lpw 的這個變數 [/code] 情況二 [code cpp] // 我把 lpw 直接宣告在事件內 int lpw = ((int)(StrToFloat(Form1->Edit5->Text)/2)) ; // 同樣的迴圈數量使用這個變數 [/code] 我發現情況二的運算量比情況一的運算量少很多呢 是不是#define的變數 每呼叫一次他就重新宣告一次? 如果是的話 #define 通常用在什麼地方呢 感覺好像蠻多餘的呢 感謝各位~!! |
istillloving
高階會員 發表:33 回覆:182 積分:183 註冊:2008-10-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |