社区
C语言
帖子详情
放在结构体定义中的宏定义,请高手点解!
zw_2046
2005-10-12 05:08:39
今天看到一段代码,里面有个结构体的定义中还包含了常量的宏定义,以前没有见过,感觉很奇怪,不知道进行预处理时,会预处理会做何处理,因此想请大家来看看,这样做有什么含义,为什么不把这些定义放在结构体定义的外部呢?
比如
typedef struct aaa
{
.....
#define STATUS_1 0X02
#define STATUS_2 0X04
#define STATUS_1 0X08
....
}
...全文
843
10
打赏
收藏
放在结构体定义中的宏定义,请高手点解!
今天看到一段代码,里面有个结构体的定义中还包含了常量的宏定义,以前没有见过,感觉很奇怪,不知道进行预处理时,会预处理会做何处理,因此想请大家来看看,这样做有什么含义,为什么不把这些定义放在结构体定义的外部呢? 比如 typedef struct aaa { ..... #define STATUS_1 0X02 #define STATUS_2 0X04 #define STATUS_1 0X08 .... }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
结构体在通信协议
中
的实战应用
本文介绍了在STM32开发
中
使用结构体优化通信协议处理的高效方法。传统数组操作存在代码臃肿、易出错和维护困难等问题,而结构体方法通过内存布局直接映射数据包字节流,实现"一键打包"。文章详细讲解了
结构体定义
的关键技巧(如packed属性)、发送实现方式以及STM32特有的三个陷阱(内存对齐、大小端问题和编译器优化),并给出了Modbus协议的结构体化实战案例。最后提出接收数据时CRC字段放置位置的思考题,启发读者对变长数据包处理的思考。这种方法可显著减少代码量、提高可读性并降低出错概率。
提高代码逼格的利器:
宏定义
的使用
一、前言一直以来,我都有这样一种感觉:当我学习一个新领域的知识时,如果其
中
的某个知识点在刚开始接触时,我感觉比较难懂、不好理解,那么以后不论我花多长时间去研究这个知识点,心里会一直认为该知...
提高代码逼格的利器:
宏定义
-从入门到放弃
道哥的第 019 篇原创 文章目录一、前言二、预处理器的操作1. 宏的生效环节:预处理2. 条件编译3. 平台预定义的宏三、宏扩展1. 最常见的宏2. 与函数的区别四、符号:\# 与 \#\#1. #: 字符串化2. ##:参数连接五、可变参数的处理1. 参数名的定义和使用2. 可变参数个数为零的处理六、奇思妙想的宏1. 日志功能2. 利用宏来迭代每个参数3. 动态的调用不同的函数4. 动态创建错误编码与对应的错误字符串七、总结 一、前言 一直以来,我都有这样一种感觉:当我学习一个新领域的知识时,如果其.
5.编译链接和宏**
数据存储-大小端
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章