看板 C_and_CPP 關於我們 聯絡資訊
/* 恕刪全文... 我認為 do-while, while-do, for迴圈某種程度上是由 if 判斷式加上 goto 組合而成(前板有推文中也有提到) 之間可以互用,這邊獻個醜,若有不對觀念請鞭小力點 謝謝.... 以下的source cide中將USING_LOOP的定義改成1~4, 再用 gcc -E 就可以看出不同的寫法,但一樣的結果 :) <P.S> 抱歉,我不會用C++,改成C .... */ #define USING_LOOP 4 #define LOOP_FOR 1 #define LOOP_DO_WHILE 2 #define LOOP_WHILE_DO 3 #define LOOP_IF_GOTO 4 #if (USING_LOOP == LOOP_FOR) #define LOOP_BEGIN(F, Begin, Stop, Step) \ for(Begin; Stop; Step) { #define LOOP_END(F, Begin, Stop, Step) \ } #elif (USING_LOOP == LOOP_DO_WHILE) #define LOOP_BEGIN(F, Begin, stop, step) \ Begin; do { #define LOOP_END(F, Begin, Stop, Step) \ Step; } while(Stop); #elif (USING_LOOP == LOOP_WHILE_DO) #define LOOP_BEGIN(F, Begin, Stop, Step) \ Begin; while(Stop) { #define LOOP_END(F, Begin, Stop, Step) \ Step; } #elif (USING_LOOP == LOOP_IF_GOTO) #define LOOP_BEGIN(F, Begin, Stop, Step) \ Begin; loop_begin_##F: #define LOOP_END(F, Begin, Stop, Step) \ Step; if (Stop) {goto loop_begin_##F;} #endif int main(int argc, char *argv[]) { int i , j; int sum; LOOP_BEGIN(a, i = 1, i <= 9, i++) { LOOP_BEGIN(b, j = 1, j <= i, j++) { sum=i*j; printf("%d*%d=%d ", j, i, sum); } LOOP_END(b, j = 1, j <= i, j++) printf("\n"); } LOOP_END(a, i = 1, i <= 9, i++) return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.136.210.73
adrianshum:何苦呢 02/01 19:15
dendrobium:你這樣寫 原PO肯定看不懂你在寫啥...XD 02/01 19:54
applecool:#放在第一行,如 # define.... 02/01 20:36
Killercat:不要講元PO了 我沒展開工具我也看不懂 -_- 02/01 20:47
pharaoh7:這........我看不懂XDDD 02/01 21:50
yauhh:乍看很有印象,但仔細一看,是程式碼代換. 02/01 22:54
remmurds:這...自找麻煩= =a 02/02 08:47
lianchiamin:謝謝lungswu大的提供,但是我看不懂...XD 02/02 10:13
ljhgc:SORRY, 我想請問一下,#define那邊 有接個”\”這是甚麼意思 02/02 10:17
james732:代表把這一行跟下一行接在一起 02/02 10:19
lungswu:1,7樓說的也是中肯,一般是不會這樣做啦,哈哈... 02/02 10:49
lungswu:回lianchiamin:使用gcc -E aa.c -o bb.c, 就可以看到aa.c 02/02 10:50
lungswu:展開的結果,儲存於bb.c 02/02 10:50
lungswu:USING_LOOP 設為1~4中的任意一個數,可以看到不同的作法 02/02 10:51