这段代码是什么意思啊?

butteryou 2011-07-18 09:13:31
#define D(A) T << #A << endl; A
...全文
200 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tgy_201212 2011-07-21
  • 打赏
  • 举报
回复
等楼主来最后来解释这段代码是什么意思
wuyuwww 2011-07-20
  • 打赏
  • 举报
回复
这个不就是带参数的宏 如果你的宏定义是对的话
直接讲 D(A) 用后面的一串T << #A << endl; A
代替 但是如果那个D(A)中的A变成数字和自符,则相应的T << #A << endl; A
也要编 不过你定义这样的宏干嘛啊
赵4老师 2011-07-20
  • 打赏
  • 举报
回复
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。
fellatioyzx 2011-07-20
  • 打赏
  • 举报
回复
少说一句:在宏里是用#是将后面的东西转换为字符串
如果你写个3+2,不用#的话,会把5给算出来,然后打印出来。
如果用了#,就会保持字符串原来的样子,打印出一个“3+2”
fellatioyzx 2011-07-20
  • 打赏
  • 举报
回复
比如说,如果你用
D(int x = 3 + 2)
就会造成输入一个“int x = 3 + 2”,同时达到创建一个int变量x并赋值5的效果。

这个东西应该是方便测试用的,模仿assert或者cppunit的感觉
fellatioyzx 2011-07-20
  • 打赏
  • 举报
回复
T应该是一个实现了<<的东西吧
这个语句的意思就是把A当作字符串打印后,执行A语句
科比布莱恩特 2011-07-20
  • 打赏
  • 举报
回复
T是模板么?
harleypang 2011-07-20
  • 打赏
  • 举报
回复
#define 宏定义语句后面可以有分号吗?
野男孩 2011-07-20
  • 打赏
  • 举报
回复
A又是什么?? 宏结束的时候还有个A。。。。
jsj1891ylly 2011-07-20
  • 打赏
  • 举报
回复
学习,,,,,,,,,,,,
ForestDB 2011-07-20
  • 打赏
  • 举报
回复

$ cat x.c
#define D(A) T << #A << endl; A

D(foo)

$ cpp x.c
# 1 "x.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "x.c"


T << "foo" << endl; foo

至于T是什么,宏替换后怎么解释,还需要跟多的上下文。
至善者善之敌 2011-07-19
  • 打赏
  • 举报
回复
这宏有问题吧。
jernymy 2011-07-18
  • 打赏
  • 举报
回复
T莫非是cout?
  • 打赏
  • 举报
回复
#define D(A) T << #A << endl; A

#define .............endl;
wesweeky 2011-07-18
  • 打赏
  • 举报
回复
T是什么 看样子是输出A的值
jungle_007 2011-07-18
  • 打赏
  • 举报
回复
T是不是在前面也有宏定义的呀?
無_1024 2011-07-18
  • 打赏
  • 举报
回复
这个还真不知道 T是什么啊
宏函数啊

64,637

社区成员

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

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