64,639
社区成员
发帖
与我相关
我的任务
分享
//
// prefix
//
#define DEBUG_PREFIX ACE_TEXT("DEBUG%I")
//
// extend ACE_DEBUG
//
#define EXT_DEBUG(...) \
ACE_DEBUG( ( LM_DEBUG, \
DEBUG_PREFIX \
__VA_ARGS__) )
//
// 下面这个宏有问题
//
#define EXT_DEBUG_RETURN(X, Y) \
{ EXT_DEBUG(X); return Y; }
//
// 如下使用时候报error C2064: term does not evaluate to a function taking 2 arguments
//
EXT_DEBUG(("string test: %s.\n", "test string"), 0);
#define ACE_TEXT(x) x
//
// prefix
//
#define DEBUG_PREFIX ACE_TEXT("DEBUG")
//
// extend ACE_DEBUG
//
#define EXT_DEBUG(fmt,...) \
printf( DEBUG_PREFIX fmt, \
__VA_ARGS__ )
//
#define EXT_DEBUG_RETURN(Y,fmt,...) \
{ EXT_DEBUG(fmt,__VA_ARGS__); return Y; }
//这么使用没有问题。将返回值放在前面,后面的是任意参数列表
EXT_DEBUG_RETURN(0,"string test: %s.\n", "test string");