2007年8月10日星期五

C的宏定义问题,如何让宏定义支持可变参数形式?

在RedHat中用CC编译器可以定义如下宏:

#define RunLog(fmt,arg1...) { debugLog(__FILE__,__LINE__,fmt,##arg1); }

应用时,可以RunLog("%s,%d,%x", strvar, intvar, pvar);
只要把 RunLog定义为 空 就可以去掉这些调试信息。调试程序时非常方便。

但在ScoUnix下的CC就不行了。。。
俺只好做了如下定义:

#define DebugPRT(str) { debugLog(__FILE__,__LINE__,str); }
#define DebugPRT1(fmt,arg1) { debugLog(__FILE__,__LINE__,fmt,arg1);}
#define DebugPRT2(fmt,arg1,arg2) { debugLog(__FILE__,__LINE__,fmt,arg1,arg2);}
#define DebugPRT3(fmt,arg1,arg2,arg3) { debugLog(__FILE__,__LINE__,fmt,arg1,arg2,arg3);}
#define DebugPRT4(fmt,arg1,arg2,arg3,arg4) { debugLog(__FILE__,__LINE__,fmt,arg1,arg2,arg3,arg4);}

别笑我笨。:oops:

各位高人指点一下。Sco下的CC该如何定义支持可变参数的宏????

我在SCO 5。0。x上面做这样的程序是可以的啊

没有评论: