Разве это не должно быть:
#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);