我想弄清楚如何編寫一個C預處理器宏,可以接受部分函數名稱和一段文本來追加到函數名稱以及一組參數來創建實際的函數名稱和函數調用。這個想法是結合前兩個宏參數來創建函數名稱,然後將其餘的宏參數添加爲創建的函數名稱的參數。如何編寫一個宏,將文本附加到部分函數名稱以創建完整的函數名稱
所以,我要實現以下目標:
MACRO(foo, postfix, ...)
----> foo_postfix(__VA_ARGS__)
舉例來說,如果我有幾個C函數,func_test1()
和func_test2()
和func_test3()
然後我希望能夠使用宏來指定func
作爲第一個參數和test1
作爲第二個參數,以便宏將創建函數名稱func_test1()
或指定func
作爲第一個參數,並將test2
作爲第二個參數,以便宏創建函數名稱func_test2
。
或類似
#define MACRO(foo,postfix,...) "macro to combine foo and postfix into actual function name"
,然後我可以用這個宏像
MACRO(func, test1, a, b, c); // will create func_test1(a, b, c);
MACRO(func, test2, i, x); // will create func_test2(i, x);
目前似乎並沒有來做到這一點的簡單方法。
你試圖解決什麼是真正的問題? – EJP
@EJP我想根據編譯器標誌調用不同的函數。 – Phonon