我是新手,求帮助

Ajist 2010-05-22 04:48:39
能不能帮我详细解释一下下面一段语句,谢谢
#define ASK(p) do { \
p=new Student; \
if (p==NULL){cout<<"memory faill!"<<endl; exit(-1);} \
}while(0)
...全文
106 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ajist 2010-05-22
  • 打赏
  • 举报
回复
谢了!
向立天 2010-05-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ajist 的回复:]
哦,能不能再详细点
[/Quote]
宏应该在一行内完成
可是有时候为了阅读清新最好是换行书写
\就是实现接行的功能
Ajist 2010-05-22
  • 打赏
  • 举报
回复
哦,能不能再详细点
jadyzdr 2010-05-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 ajist 的回复:]
能不能帮我详细解释一下下面一段语句,谢谢
#define ASK(p) do { \
p=new Student; \
if (p==NULL){cout<<"memory faill!"<<endl; exit(-1);} \
}while(0)
[/Quote]
遇到ASK的时候就用后面的那个do ……while语句替换,至于为什么加\,msdn解释是:The formal parameters in the list are separated by commas. Each name in the list must be unique, and the list must be enclosed in parentheses. No spaces can separate identifier and the opening parenthesis. Use line concatenation — place a backslash (\) before the newline character — for long directives on multiple source lines. The scope of a formal parameter name extends to the new line that ends token-string.

也就是说再宏定义在要换行的时候必须在后面加一个\
liutengfeigo 2010-05-22
  • 打赏
  • 举报
回复
\
在这里是什么意思呢?期待高手来回答
Ajist 2010-05-22
  • 打赏
  • 举报
回复
还有do里面的语句每一行后面为什么要加“\”这个符号,不加试编译一下会出错
cliffbaby 2010-05-22
  • 打赏
  • 举报
回复
宏定义 主要是为 P 申请一个Student 大小的空间。 如果失败。输出错误信息,然后 退出。
ASK(p) 后面不能加多条语句。所以用个 do while
huanmie_09 2010-05-22
  • 打赏
  • 举报
回复
Student p;
ASK(p);
直接把宏里的东西替换进来,如下:
Student p;
do { \
p=new Student; \
if (p==NULL){cout<<"memory faill!"<<endl; exit(-1);} \
}while(0);
就是new出一个Student对象.如果失败,输出错误信息,并推出程序.
liutengfeigo 2010-05-22
  • 打赏
  • 举报
回复
宏定义,遇到就直接插进去?

64,662

社区成员

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

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