宏的一些细节

#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;
}
posted @ 2022-09-30 12:20  ijpq  阅读(30)  评论(0编辑  收藏  举报