导航:[首页]->[cpp]->[使用可变参数宏提高代码整洁性]

写一个宏来判断条件是否符合,若不符合则中断函数,同时兼容返回void的函数。在VS2012和Linux运行正常。

#include <cstdio>

#define CHECK(expr,...) \
    do{ \
        if(!(expr)){ \
            printf("check [%s] fail\n",#expr); \
            return __VA_ARGS__; \
        }\
    }while(0)

void func1()
{
    CHECK(1 - 1);
}

int func2()
{
    func1();
    CHECK(2 - 2,1);
}


int main()
{
    func2();
    return 0;
}