[問題] 巨集中是否能對變數做前處理?

看板C_and_CPP (C/C++)作者 (YmEaSn)時間16年前 (2010/05/26 02:02), 編輯推噓3(307)
留言10則, 9人參與, 最新討論串1/2 (看更多)
我是個c++的半生手 最近遇到一個case 前人留下的程式 設了一系列的20多個變數 例如 int a1, a2, a3, a4, ... 造成維護上相當的不便.. 因此想請教各位高手 是否有什麼巨集的寫法能夠在編譯時就將變數代入 例如.. (我知道這個例子行不通orz) #define TEST_M(i) cout << a ## i << endl; 在使用時可以像這樣 int a1 = 100; int a2 = 200; int a3 = 300; for(int i=0 ; i<3 ; i++) TEST_M(i); 而印出 100 200 300 的結果 因為巨集會先展開 上面的用法在編譯時就會告訴我沒有 ai 這個變數= =" 為了這個問題今天google了幾乎大半天 沒有找到可用的資訊.. 因此想請問各位高手 是否有可行的做法? 先謝謝了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.174.86

05/26 02:26, , 1F
try and error
05/26 02:26, 1F

05/26 02:27, , 2F
trial..
05/26 02:27, 2F

05/26 02:28, , 3F
Hi, I think using class to encapsulate it is better
05/26 02:28, 3F

05/26 02:34, , 4F
設了一系列的20多個變數 <=== 這個設計或許可以改掉?
05/26 02:34, 4F

05/26 03:06, , 5F
如果是要用for展開的話應該是不可能
05/26 03:06, 5F

05/26 07:26, , 6F
use...array...
05/26 07:26, 6F

05/26 10:31, , 7F
應該是沒有辦法,preprocessor不會去分析loop呀 :P
05/26 10:31, 7F

05/26 21:11, , 8F
果然如此..感謝大家給了我一個確定的答案^^"
05/26 21:11, 8F

05/27 00:41, , 9F
template偏特化 不過你要學很久...
05/27 00:41, 9F

05/29 10:42, , 10F
唯一想到的解法是用跟 fusion::pair 類似的手法.. = ="
05/29 10:42, 10F
文章代碼(AID): #1B_12pt5 (C_and_CPP)
文章代碼(AID): #1B_12pt5 (C_and_CPP)