弱弱的问下 #define

wind1373290 2008-11-09 11:48:28

#include <stdio.h>
#define mkchar(x) #@x
#define mc(x) #x

int main()
{
printf("%c\n",mkchar($));
printf("%c\n",mc($));
getch();
return 0;
}

那中间加个@有什么作用?
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wind1373290 2008-11-09
  • 打赏
  • 举报
回复
谢谢大家 不过我还不懂汇编 ^^
arong1234 2008-11-09
  • 打赏
  • 举报
回复
这个不需要汇编吧:)用汇编理解高级语言不一定是好办法,有时还会误导,因为这只代表一种编译器实现。
MSDN直接就有答案
[Quote=引用 3 楼 hqin6 的回复:]
C/C++ code

8: printf("%c\n",mkchar(2));
00401048 push 32h
0040104A push offset string "'f'" (0042201c)
0040104F call printf (004011a0)
00401054 add esp,8


看来是将x变为字符,而非字符串
[/Quote]
太乙 2008-11-09
  • 打赏
  • 举报
回复


8: printf("%c\n",mkchar(2));
00401048 push 32h
0040104A push offset string "'f'" (0042201c)
0040104F call printf (004011a0)
00401054 add esp,8


看来是将x变为字符,而非字符串

arong1234 2008-11-09
  • 打赏
  • 举报
回复
兄弟不看MSDN的么?:) #@是一起的,不是中间的@单独起啥作用,#@把后面的参数转换为一个字符

mc的用法不是很合法吧?#x是得到一个字符串的,是不应该用%c格式化输出的
太乙 2008-11-09
  • 打赏
  • 举报
回复
up~~~~

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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