全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1653
推到 Plurk!
推到 Facebook!

關於 #define 的宣告方式

缺席
istillloving
高階會員


發表:33
回覆:182
積分:183
註冊:2008-10-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-02-28 11:39:10 IP:140.127.xxx.xxx 訂閱
各位大大:

最近在幫我的程式運算量瘦身

過程當中我發現使用 #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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-02-28 12:34:30 IP:140.127.xxx.xxx 訂閱
上網拜了一下大神

http://www.cnblogs.com/minhost/archive/2009/01/07/1370806.html

感覺有一點點了解...繼續找資料看看...
------
恩...
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-02-28 21:21:05 IP:114.137.xxx.xxx 未訂閱
你在想什麼????
情況一:
我跟編譯器宣告了 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-02-28 22:24:46 IP:124.9.xxx.xxx 訂閱
大大您好:

教訓的是阿......

真的是還沒了解透徹我就拿來用先...
------
恩...
系統時間:2024-04-18 22:53:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!