宏定义出现C2064错误

wl_99888 2009-06-06 05:28:54


//
// 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);


软件环境: XP SP3 + VS2008 SP1
参考<<ACE程序员指南>>第三章
...全文
91 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltc_mouse 2009-06-07
  • 打赏
  • 举报
回复
("string test: %s.\n", "test string")
--------------------------------------------
应该是这里的括号导致了编译错误,能否改用这种形式的? 为测试,用printf代替了那个ACE_DEBUG

#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");
liubuweiright 2009-06-07
  • 打赏
  • 举报
回复
学习...

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧