我有一種情況,我有很多生成的函數,並希望將它們指向我創建的一些通用函數(以便在重新創建函數時重用基本代碼)生成的函數名稱更改)。用於生成函數名稱的C預處理器定義
從本質上講,我有函數名稱的列表如下:
void Callback_SignalName1(void);
void Callback_SignalName2(void);
...etc
一旦這些產生,我想定義一個宏,讓他們被統稱。我的想法是這樣的,但我沒有任何運氣執行它......作爲Ç預處理器採用宏的名稱,而不是什麼樣的宏定義爲:
#define SIGNAL1 SignalName1
#define SIGNAL2 SignalName2
#define FUNCTION_NAME(signal) (void Callback_ ## signal ## (void))
...
...
FUNCTION_NAME(SIGNAL1)
{
..
return;
}
問題是我收到的
void Callback_SIGNAL1(void)
代替
void Callback_SignalName1(void)
有沒有解決這個好辦法?
它不應該是的#define FUNCTION_NAME(了funcName)無效了funcName(無效)? – 2009-08-10 09:39:42
對不起,編輯了一下更多的澄清...我留下了一個重要的組成部分,有函數名的另一部分去那裏...... – espais 2009-08-10 09:41:23
注意signal'和'(無效)''之間的##是不正確的。 ##用於通過連接多個令牌來創建單個令牌。左括號不能是(也不應該是!)作爲函數名稱的標記的一部分。確實是 – 2009-08-10 09:46:41