0
不應該這樣:##宏參數串聯不工作如我所料
#define MOGSH_CONCAT (x,y) x##y
#define MOGSH_DOUBLE (a,b) MOGSH_CONCAT(a,b)
#define MOGSH_DEFINEPROC (p) MOGSH_DOUBLE(_gt,p) options_dialog::p;
MOGSH_DEFINEPROC(AssignMainForm);
高興地擴展爲:
_gtAssignMainForm options_dialog::AssignMainForm;
鑑於_gt
沒有定義,_gtAssignMainForm
是:
typedef void (__stdcall *_gtAssignMainForm)();
和options_dialog
只是一個類,其中AssignMainForm
是一個靜態成員。
相反,在MSVC9,我得到的錯誤:
'a' : undeclared identifier
含
MOGSH_DEFINEPROC(AssignMainForm);
刪除宏名和定義中的'(arguments)'之間的空格?這使它在gcc中適用於我,但我沒有MSVC來測試。 – Andy 2011-04-20 22:59:47
最終發現它:可能重複[? C++空間免費語言](http://stackoverflow.com/questions/4814952/c-space-free-language)。不能責怪你沒有找到它。 – delnan 2011-04-20 23:02:17
哈利路亞,兄弟,它的作品! :D,thx安迪先生! – Cray 2011-04-20 23:06:59