能不能通过宏定义变量名?

lsgt 2008-11-12 01:55:53

#define WLOCK(x) wLock _tmp_name(&x)
void foo()
{
{
WLOCK(&m_myLock1);
{
...
WLOCK(&m_myLock2);
...
}
...
}
}

这里面有个问题,两次调用WLOCK使用同样的_tmp_name,显然不行。怎么样在宏里面定义一个变量名呢?比如WLOCK(&x)如果可以做成这样的效果就好了:
#define WLOCK(x) wLock _tmp_lock_#x(&x)这样每个嵌套的wLock就有不同的临时名字了。
...全文
904 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsgt 2008-11-12
  • 打赏
  • 举报
回复
谢谢,刚也试出来了,揭帖
xhs_lh04 2008-11-12
  • 打赏
  • 举报
回复
理解错LZ意图

应该
#define WLOCK(x) wLock _tmp_name##x
##预编译连接操作符
xhs_lh04 2008-11-12
  • 打赏
  • 举报
回复
#define def_val(type, a) type a


void main()
{
def_val(int, b);
b = 10;
printf("b=%d\n", b);
}
yuwei2589 2008-11-12
  • 打赏
  • 举报
回复
能通过宏可以定义变量名:

楼主不妨一试:

#define WLOCK(x) wLock _tmp_name##x


##在宏中表示连接
lzr4304061988012 2008-11-12
  • 打赏
  • 举报
回复

#define WLOCK(x) wLock _tmp_lock_##x(&x)
你说的是这个意思不?
lzr4304061988012 2008-11-12
  • 打赏
  • 举报
回复

#define WLOCK(x) wLock _tmp_lock_##x(&x)
你说的是这个意思不?
hznat 2008-11-12
  • 打赏
  • 举报
回复
不明白为什么“两次调用WLOCK使用同样的_tmp_name,显然不行”。
感觉这个宏本身就有奇怪,楼主能否详细说明一下。

64,645

社区成员

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

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