我想創建將參數插入函數調用的宏。例如,我有下面聲明的功能Action()
。動作需要輸入一個枚舉狀態號和一個格式化的字符串,該字符串具有可選的參數。如何通過#define函數將參數添加到格式化字符串函數調用
我想定義宏,以便代替調用Action(ActionState1, "someText %d", &arg)
與ActionState1
的狀態參數,我可以叫State1("someText %d", &arg)
來代替。這樣宏將堅持在ActionState1
爲我的狀態參數。我正在考慮類似以下內容:
#define State1(formatedString, ...) Action(ActionState1, formatedString, ...)
#define State2(formatedString, ...) Action(ActionState2, formatedString, ...)
#define State3(formatedString, ...) Action(ActionState3, formatedString, ...)
enum {
ActionState1,
ActionState2,
ActionState3
}
static void Action(State state, String formatedString, ...);
有誰知道這是什麼格式嗎?
只因爲你*可以*做到這一點,並不代表你*應該*。考慮將'enum'作爲第一個參數傳遞給'Action',或者將'Action'傳入多個函數。 – Seth 2010-09-08 00:38:04
枚舉是Action的第一個參數,我剛剛沒有在我的例子中展示過(我現在已經更新了它)。 – 2010-09-08 01:14:10