[英]Using macros to generalise code for function calls
我正在編寫C代碼,這要求我使用具有相同定義的多個函數調用,這些函數調用僅以單個字符不同。 有沒有一種方法可以使我的宏函數帶有一個數字,並且可以將這些調用插入我的代碼中,在給定我在編譯時知道數字的情況下,我可以在其中調用宏:
即
#define call_pin_macro(X)
enable_pin#X();
do_thing_pin#X();
do_other_thing_pin#X();
.
.
void pin_function(void){
call_pin_macro(1);
call_pin_macro(2);
call_pin_macro(3);
}
代替:
void pin_function(void){
enable_pin1();
do_thing_pin1();
do_other_thing_pin1();
enable_pin2();
do_thing_pin2();
do_other_thing_pin2();
enable_pin3();
do_thing_pin3();
do_other_thing_pin3();
}
作為注釋,我已經看過gcc中的字符串化(因此包含了#X),但是我無法獲取上面的代碼進行編譯,但出現錯誤“錯誤:'#'后沒有宏參數”。 因此,這似乎並不是我所追求的功能。 提前致謝。
在gcc中,您可以這樣操作:
#define call_pin_macro(X) \
enable_pin##X(); \
do_thing_pin##X(); \
do_other_thing_pin##X();
雙哈希是宏串聯運算符。 您不想使用stringify,因為這會在其周圍加上引號。
反斜杠允許您在幾行上繼續宏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.