有沒有辦法提供一個代碼的整個塊作爲參數的宏,並將其擴展到定義?如何將代碼塊用作c預處理器指令的參數?
#define PATTERN(param,func)\
chk=new wxCheckBox(page,wxID_ANY,param);\
sizer->Add(chk,0,0,0);\
chk->Bind(wxEVT_CHECKBOX,func);
PATTERN("checkbox 1",
//piece of code
[=](wxCommandEvent& event){
wxMessageBox(wxT("test"),wxT(""),wxICON_INFORMATION);
}
//end of code
)
如何封裝這些手段的代碼? 我希望能夠做到:
#define DERIVATIVE(s)\
PATTERN(...)
一般來說,這是可能的。你有沒有編譯錯誤? – MrTux 2014-09-02 16:50:24
逗號會干擾他們嗎?你最終會得到多個附加參數。我可以使用__VAR_ARGS,但我想知道是否有一個優雅的解決方案 – aelgoa 2014-09-02 16:51:12
爲什麼不使用一個小的靜態函數呢? – MrTux 2014-09-02 16:52:57