结构体定义里有宏定义,对吗?有什么意义?偶不懂,请高手指点,谢谢!

IamScout 2004-03-28 09:03:15
偶看源代码,发现有的程序有如下代码段:
struct aa{
int bb;
char cc;
#define DDD 0x00000001;
#define EEE 0x00000011;
………………
}

就是在结构体定义中有宏定义,偶不懂这是什么用法,有什么意义,在结构体在定义对象时不是有重复宏定义了吗?请高手解惑,谢谢!!!
...全文
577 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
darkstar21cn 2004-03-29
  • 打赏
  • 举报
回复
liao2001(知之为知之,不知为不知。。。):同感!无予补充。
liao2001 2004-03-29
  • 打赏
  • 举报
回复
从语言的角度来说,和结构体外定义的没有什么区别。
它的意义:告诉你(阅读源代码者),这几个宏将只用于这个结构体。

比方说:char *strcat(char *dest,const char *src)
那个const是干什么用的?就是告诉读者,不用当心那个入参会被修改,同时隐含“源串”的意思。

这些是程序员交流的手段,除非你的代码只是自己一个人看。
bshaozi 2004-03-29
  • 打赏
  • 举报
回复
我觉的宏定义的是内存地址,
在程序运行的时候将结构体储存在这个宏代表的地址内(个人意见)
moswawa 2004-03-29
  • 打赏
  • 举报
回复
可以用这种形式对齐.
tms320ad50 2004-03-29
  • 打赏
  • 举报
回复
可能在debug时有用吧
chenzhichao2008 2004-03-29
  • 打赏
  • 举报
回复
应该跟结构定义没什么区别的吧:
它也应该不是结构中的一个成员吧
#include<iostream.h>
#include"stdlib.h"
struct aa{
int bb;
char cc;
#define DDD 5
#define EEE 6
};

void main(void)
{
struct aa k;
cout<<k.DDD;//出错
cout<<DDD;//正确
system("pause");
}
ruihouwei 2004-03-29
  • 打赏
  • 举报
回复
liao2001(知之为知之,不知为不知。。。)说得是对的!:)果然是高手!

纠正chenzhichao2008(陈智超)的说法,这几个宏虽然是在结构体中第定义的,但不能说是结构体里面地成员!
所以像这样写:k.DDD是错的!
ruihouwei 2004-03-29
  • 打赏
  • 举报
回复
liao2001(知之为知之,不知为不知。。。)说得是对的!:)果然是高手!

纠正chenzhichao2008(陈智超)的说法,这几个宏虽然是在结构体中第定义的,但不能说是结构体里面地成员!
所以像这样写:k.DDD是错的!
IamScout 2004-03-28
  • 打赏
  • 举报
回复
不好意思,偶手顺了一下。
不过偶还是不明白,例如这样做有什么好处,再者,我看结构体中定义了宏,下面也没有用到。
zhangfjj 2004-03-28
  • 打赏
  • 举报
回复
#define DDD 0x00000001;
#define EEE 0x00000011;//后面怎么有分号呢?
yzwpf 2004-03-28
  • 打赏
  • 举报
回复
意义在于一般这样定义的DDD ,EEE表示只用于该结构,你试试在结构体外看能不能使用DDD。
xiaonanln 2004-03-28
  • 打赏
  • 举报
回复
据我个人观察,这和在外面申请没有任何区别
IamScout 2004-03-28
  • 打赏
  • 举报
回复
首先声明程序绝对是对的。

69,382

社区成员

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

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