void PrintfCode(char *str,...);#define TRACE_DEBUG(fmt) PrintfCode(fmt)现在有
TRACE_DEBUG("Test:%d, %s",nNum,szTemp)
语句,但是却始终得不到
PrintfCode("Test:%d, %s",nNum,szTemp)
为什么?
我怎么样才能够将宏TRACE_DEBUG(fmt)里面的fmt全部都变成函数PrintfCode(fmt)里的fmt呢
谢谢

解决方案 »

  1.   

    参考TRACE的定义:
    inline void AFX_CDECL AfxTrace(LPCTSTR, ...) { }
    #define TRACE              1 ? (void)0 : ::AfxTrace
    #define TRACE0(sz)
    #define TRACE1(sz, p1)
    #define TRACE2(sz, p1, p2)
    #define TRACE3(sz, p1, p2, p3)
      

  2.   

    #define TRACE_DEBUG(para1,para2,para3) PrintfCode(para1,para2,para3)呵呵,很是痛苦
      

  3.   

    宏不能完成这种可变参数个数的函数的参数之间的转换把。
    MFC中使用:
    #define TRACE              ::AfxTrace
    直接将函数名映射为TRACE宏,参数让其自己处理了