社区
C语言
帖子详情
放在结构体定义中的宏定义,请高手点解!
zw_2046
2005-10-12 05:08:39
今天看到一段代码,里面有个结构体的定义中还包含了常量的宏定义,以前没有见过,感觉很奇怪,不知道进行预处理时,会预处理会做何处理,因此想请大家来看看,这样做有什么含义,为什么不把这些定义放在结构体定义的外部呢?
比如
typedef struct aaa
{
.....
#define STATUS_1 0X02
#define STATUS_2 0X04
#define STATUS_1 0X08
....
}
...全文
786
10
打赏
收藏
放在结构体定义中的宏定义,请高手点解!
今天看到一段代码,里面有个结构体的定义中还包含了常量的宏定义,以前没有见过,感觉很奇怪,不知道进行预处理时,会预处理会做何处理,因此想请大家来看看,这样做有什么含义,为什么不把这些定义放在结构体定义的外部呢? 比如 typedef struct aaa { ..... #define STATUS_1 0X02 #define STATUS_2 0X04 #define STATUS_1 0X08 .... }
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jixingzhong
2005-10-13
打赏
举报
回复
也许把 没有很注意这个问题哦 自己也没有这样用过 呵呵
zw_2046
2005-10-13
打赏
举报
回复
我开始也怀疑作用域的问题,看来这不成问题了!
综上:是否该宏定义与放在外部是等同的,编译预处理器同样在内存中为每一个定义存储一个常量,而程序中各个部分都能毫无分别的使用该定义呢?而这样写的目的只是在开发过程中便于程序员理解该定义的逻辑意义.
zw_2046
2005-10-13
打赏
举报
回复
看来得回家动手试试才知道了哦!
bailingke
2005-10-13
打赏
举报
回复
编译器根本不知道有什么宏,编译器单元中只有宏定义后面的数字,跟作用域有什么关系?
DiabloWalkOnTheEarth
2005-10-13
打赏
举报
回复
谁说不能在函数体内定义宏, 只要喜欢, 什么地方定义宏根本就木关系. 宏本来就不是 语言的一部分, 预处理器也根本不会知道宏定义是在结构内还是结构外, 函数内还是函数外.
snowbirdfly
2005-10-13
打赏
举报
回复
个人感觉就是便于阅读程序,容易理解~~~
lengxiao_wang
2005-10-13
打赏
举报
回复
补充一下:宏的作用域的问题可以使用#undef/#endif 对定义即可。但是有一点你得注意,不能再函数体内定义宏。
cdo
2005-10-12
打赏
举报
回复
试了一下,#define STATUS_1 0X02 可以在全局使用。这样写可能是为了读代码方便吧。
jsjjms
2005-10-12
打赏
举报
回复
好象关系到作用域吧?
qfeng_zhao
2005-10-12
打赏
举报
回复
跟放在外面一样
不过这几个宏只在本结构体内使用,代码读起来比较方便
C语言程序的构成[归纳].pdf
C语言程序的构成[归纳].pdf
提高代码逼格的利器:
宏定义
的使用
一、前言一直以来,我都有这样一种感觉:当我学习一个新领域的知识时,如果其
中
的某个知识点在刚开始接触时,我感觉比较难懂、不好理解,那么以后不论我花多长时间去研究这个知识点,心里会一直认为该知...
提高代码逼格的利器:
宏定义
-从入门到放弃
道哥的第 019 篇原创 文章目录一、前言二、预处理器的操作1. 宏的生效环节:预处理2. 条件编译3. 平台预定义的宏三、宏扩展1. 最常见的宏2. 与函数的区别四、符号:\# 与 \#\#1. #: 字符串化2. ##:参数连接五、可变参数的处理1. 参数名的定义和使用2. 可变参数个数为零的处理六、奇思妙想的宏1. 日志功能2. 利用宏来迭代每个参数3. 动态的调用不同的函数4. 动态创建错误编码与对应的错误字符串七、总结 一、前言 一直以来,我都有这样一种感觉:当我学习一个新领域的知识时,如果其.
这个c语言技巧,刷新了我对结构体的认知!
【说在前面的话】2022年了,想必已经不会有人对嵌入式开发
中
“数据结构(Data Structure)”的作用产生疑问了吧?无论你是否心存疑惑,本文都将给你一个完全不同的视角。每每说起数据...
C语言开发总结(十一)
单片机C语言模块化编程 下面让我们揭开模块化神秘面纱,一窥其真面目。 C语言源文件 *.c 提到C语言源文件,大家都不会陌生。因为我们平常写的程序代码几乎都在这个XX.C文件里面。编译器也是以此文件来进行编译并生成相应的目标文件。作为模块化编程的组成基础,我们所要实现的所有功能的源代码均在这个文件里。理想的模块化应该可以看成是一个黑盒子。即我们只关心模块提供的功能
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章