硬汉嵌入式论坛

 找回密码
 立即注册
查看: 623|回复: 1
收起左侧

分享用BUILD_BUG_ON()进行编译时条件检查,方便

[复制链接]

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2021-11-9 16:27:41 | 显示全部楼层 |阅读模式
本帖最后由 emwin 于 2021-11-9 16:30 编辑

最近正好在对代码进行审查,对一些有关联的代码或枚举,可以使用该方式编译时就检查出来。
它是编译过程中触发,不像宏是预处理阶段,支持大多数的语法,比如sizeof/常量的数学运算等。


举例(检查连续数据跨EEPROM页):
  1. #define  IF_EEP_MULTI_PAGE(shift, len) (((shift) / EEPROM_DATA_BUFF_SIZE) != (((shift) + (len)) / EEPROM_DATA_BUFF_SIZE))
  2. BUILD_BUG_ON(IF_EEP_MULTI_PAGE(Para_Addr, sizeof(Para)));
复制代码


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2021-11-10 08:54:37 | 显示全部楼层
这个就类似于断言机制吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 19:50 , Processed in 0.200677 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表