C語言中的巨集定義如何傳遞形參

2022-10-21 11:16:48 字數 798 閱讀 2017

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...