[問題] 能不能用macro做到這件事

看板C_and_CPP作者 (咕啾咕啾魔法陣)時間15年前 (2010/05/15 15:47), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/3 (看更多)
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 編譯時顯示sum未宣告 我知道是因為sum被展開成sum+1 有沒有辦法讓"sum+1"裡的sum取得之前所定義的值 希望得到的正確結果: 印出1 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) #define sum 0; #define sum sum+1; . . . int main(){ . . printf("sum=%d\n",sum); . . } 補充說明: 其實是為了嘗試不用template在編譯期算出1+...+10 差在不能取之前定義的值 #ifndef loop #define loop 10 #define sum 0 #endif #define sum (sum+loop) #define loop loop-1 #if loop>0 #include "1.hpp" // include自己 #endif -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.226.149

05/15 16:01, , 1F
這樣compiler根本不知道你想要哪個值阿...
05/15 16:01, 1F

05/15 16:02, , 2F
不過 有類似的方法 要請熟template常數偏特化的人來講解
05/15 16:02, 2F

05/15 16:04, , 3F
我會用template,其實我是想用macro跑迴圈,可以用
05/15 16:04, 3F

05/15 16:05, , 4F
include自己的方式重複跑,但是沒辦法限定跑幾次,所以
05/15 16:05, 4F

05/15 16:05, , 5F
才想問有沒有取之前定義的值的方法
05/15 16:05, 5F
※ 編輯: loveflames 來自: 140.134.226.149 (05/15 16:16)

05/15 16:12, , 6F
原 PO 要的可能得要去 IOCCC 裡面挖...
05/15 16:12, 6F

05/15 16:12, , 7F
(我印象中某年 IOCCC 就有人寫過這種玩意)
05/15 16:12, 7F
文章代碼(AID): #1Bxb69ig (C_and_CPP)
文章代碼(AID): #1Bxb69ig (C_and_CPP)