#define len sizeof(student) //中不管student在何处定义都不出错,为什么?

woneedjob 2010-01-04 12:01:32

#define len sizeof(student)//我的student是后面定义的,但是它这里就可以计算了,代码还得到正确结果,为什么呢?
typedef struct student
{
int data;
student *next;
}Node;
...全文
214 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
woneedjob 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pur_e 的回复:]
你没明白define的作用,预处理,是在编译之前就会被处理的代码,define定义的是简单的字符替换,就是说代码编译之前就进行替换,比如,你定义了
#define len sizeof(student)

那么,在后面你用len的时候,比如:

int a=len;

那么经过预处理后会变成:

int a=sizeof(student);
[/Quote]
你说的很明白,谢谢大家,结贴~
pur_e 2010-01-04
  • 打赏
  • 举报
回复
你没明白define的作用,预处理,是在编译之前就会被处理的代码,define定义的是简单的字符替换,就是说代码编译之前就进行替换,比如,你定义了
#define len sizeof(student)

那么,在后面你用len的时候,比如:

int a=len;

那么经过预处理后会变成:

int a=sizeof(student);
yshuise 2010-01-04
  • 打赏
  • 举报
回复
这儿并没有计算,也就是根本还没有使用。
yuanlin2008 2010-01-04
  • 打赏
  • 举报
回复
因为宏定义只负责告诉编译器,如何从文本角度展开一个宏,不做任何语法判断。
只有在使用宏的地方,将宏展开后,才做语法判断。
这样解释能明白吗?

64,652

社区成员

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

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