#include <stdio.h>
#include <iostream>
#define MACRO(x,y,cb) \
{ \
printf("%s, %s\n",(x), (y)); \
(cb); \
}
int func( ) {
std::cout << "calling func" << std::endl;
return 0;
}
int main()
{
MACRO("XXX", "YYYY", func()) // 这里只是没涉及宏参数中带有comma的情况,如果使用了func<a,b>类似的情况,改为MACRO(..., (func()))更好,顺便可以把macro中cb的括号去掉
(func());
return 0;
}