inline void PrintValidateMsg(const char* file,int line,const char* cond,const char* msg)
{
if(msg)
fprintf(stderr,"%s(%d):%s invalid:%s\n",file,line,cond,msg);
else
fprintf(stderr,"%s(%d):%s invalid\n",file,line,cond);
}
#define MY_VALIDATE(cond,ret,msg) \
if(cond) { \
} \
else { \
PrintValidateMsg(__FILE__,__LINE__,#cond,msg); \
return ret; \
} \
struct ThreadKitDummyClass
1、当需要返回为void时,ret字段需要为空,如下面只有2个参数,中间的为空内容。
void fun()
{
//......
int i=0;
MY_VALIDATE(i==0,,NULL);
}
2、目前主流的编译器都可以正确编译,C99支持空的参数。
3、上次在linux gcc 4.4下,makefile中被加上-pedantic,好象是使用了C90标准,结果编译失败。用MY_VALIDATE(i==0,void(0),NULL)可以在该方式下编译通过。