簡體   English   中英

使用宏概括函數調用的代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM