Re: [問題] 有關巨集的問題

看板C_and_CPP (C/C++)作者時間16年前 (2009/07/06 23:42), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串3/3 (看更多)
作者: karcher (Grothendieck ) 看板: C_and_CPP 標題: Re: [問題] 有關巨集的問題 時間: Mon Jul 6 23:41:59 2009 淺水太久,出來賺點P幣 答案應該為3 以下是以前寫一個遊戲用到的巨集 遊戲玩法類似有一堆卡片 如果有兩張卡片是一樣的而且可以找到一條路,就由程式判斷可不可以消牌 typedef struct Square { int width; int height; Point center; // the center position of the card int pic; // content of the card }; std::vector<int> ShowPic[8*9]; //卡片 .. .. .. enum { JOKE = 0, .. .. .. EMPTY = 54088 }; #define Response(b,c,d,e) switch(test_mode) { case 0: ShowPic[8*b + c].pic = ShowPic[8*d+e].pic =EMPTY; ////消牌 break; case 1: test_first_row = (ShowPic[8*b+c].center.x-initx)/26; test_first_column = (ShowPic[8*b+c].center.y-inity)/36; test_second_row = (ShowPic[8*d+e].center.x-initx)/26; test_second_column = (ShowPic[8*d+e].center.y-inity)/36; PossibleWay(); ////判斷更兩張牌是否有解,包含去找路線,很多層迴圈... break;} ※ 引述《Fenikso (ばかちーは俺の嫁)》之銘言: : ※ 引述《CsAtPccu (站慄時空)》之銘言: : : 最近參加一個考試,其中有一題題目如下 : : 下列何者不是巨集處理器的優點 : : 1. 減少程式長度 : : 2. 可重複使用 : : 3. 提升程式的執行效率 : : 4. 使程式容易瞭解 : : 答案公佈為 3 : : 但我認為是 1 : : 我的看法如下: : : 巨集展開來後,程式會比用 function call 還大 : : 因為不是用 function call,所以效率會比較好 : : 不知是我的認知有錯還是答案是錯的,請問各位的看法如何 ? : 以下全部是我的猜測(汗 : 首先, 要講優點一定要有個對照組 : 你假設對照組是function call : 但是這題並不是要你拿macro跟function比, : 因為macro跟function其實差不多..根本沒辦法選 : 要比較的是用macro跟不用macro : 什麼意思呢? : 這是用macro的版本: : #define f(x) ((x)*(x)) : int main() { : cout << f(1) << ' ' << f(2) << endl; : } : 這是不用macro的版本: : int main() { : cout << ((1)*(1)) << ' ' << ((2)*(2)) << endl; : } : 這樣一比就會發現 : 1. 不用macro的code的確變長了 (x的..我根本在睜眼說瞎話XD) : 2. macro可以重複使用 : 3. 效率不變, 經過preprocessor後兩段code是一樣的 : 4. 大概吧...(汗) : 答案是3. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.137.87.141 ※ 編輯: karcher 來自: 220.137.87.141 (07/06 23:47)

07/07 01:17, , 1F
看不出這和原po的答案有何關係
07/07 01:17, 1F

07/07 01:18, , 2F
另外 std::vector<int> ShowPic[8*9]; 應該是寫錯了
07/07 01:18, 2F

07/07 01:18, , 3F
#define Response 的地方似乎少了很多 backslash?
07/07 01:18, 3F

07/07 20:31, , 4F
打錯了...std::vector<Square> ShowPic
07/07 20:31, 4F

07/07 20:32, , 5F
至於Response 其實只有一行
07/07 20:32, 5F
文章代碼(AID): #1AKXjBeZ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AKXjBeZ (C_and_CPP)