1樓:匿名使用者
給巨集傳遞執行時計算的變數是絕無可能辦到的。
不過假如只是這一個迴圈的話,可以利用預處理……
#define repeat_0(f) f(0)
#define repeat_1(f) repeat_0(f) f(1)
#define repeat_2(f) repeat_1(f) f(2)
#define repeat_3(f) repeat_2(f) f(3)
#define repeat_4(f) repeat_3(f) f(4)
#define repeat_5(f) repeat_4(f) f(5)
#define repeat_6(f) repeat_5(f) f(6)
#define repeat_7(f) repeat_6(f) f(7)
#define repeat_8(f) error_exceed_limit
#define repeat(n,f) repeat_##n(f)
/* 用法如下 */
#define ld(n) left_back(n);delay(4);
repeat(7,ld)
好處是這個巨集是可以重用的,在別的地方也可以使用,並且不佔執行時間。
2樓:倒黴熊
#define 引數就是這樣呼叫的 沒有什麼問題啊 ##表示字串連線,但是我覺得可能達不到你的要求
因為left_back(i) 會替換成 rf_stepi 吧,而不是你想要餓 rf_step1 之類的。
在C語言中,定義函式的形參和實參之間具體是如何進行引數傳
函式中的形參和呼叫時的實參都是陣列名時,傳遞方式為 地址傳遞 此時形參和實參共用同一段記憶體 都是變數時,傳遞方式為 值傳遞 實參與形參互不影響 主要有兩種 1 值傳遞 在函式呼叫時,將實參的值複製一份傳遞到呼叫函式中,這樣,如果在呼叫函式中修改了引數的值,也不會影響到實參的值。2 引用傳遞 與 1...
關於C語言中陣列的定義,C語言中如何定義陣列
一樣的,陣列在做函式引數時,傳遞給函式的都是陣列的首指標,哪怕你的函式這樣寫 void swp int p 在呼叫的時候swp array 也是可以的。只要傳遞給函式一個陣列的首指標就行了,而你的array正好是陣列的首指標。char s 10 123 是表示前三個元素分別是1,2,3但s 2 0 ...
c語言中如何定義二維陣列,C語言中如何定義一個二維陣列
int a 2 3 a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 表示兩行三列 include main int i,j,total 0 for i 0 i 3 i printf n printf total d n total 用指標new出來 二維陣列定義必須規定列 i...