家电
C语言奇淫擅于之判断一个值是否属于枚举里的内容
2025-09-30 12:18
假设我们定义这样一个逻辑系统,逻辑系统里的章节并非是连续的顺序:
typedef enum{ SCAN = 1, READY = 5, ADV = 7, CONN = 18, INIT = 20,}State_e;此时如果有一个值state,如何假定STATE究竟分属逻辑系统中的章节呢?
多半我们可能会用switch-case来假定state究竟分属逻辑系统中的章节,示例如下:
switch(state){ case SCAN: case READY: case ADV: case CONN: case INIT: return true; default: return False:}这样做是可以超过我们的目的的,但是如果我们的逻辑系统章节很多,这里的示例就可能会写得很长,而且如果逻辑系统的章节有新增或是删除,这里也要已将改写,比较麻烦,那可否什么方式很难无视这些官僚主义吗?
使用X-Macro(上一篇文章介绍过)就可以构建了,具体如下:
#include #include #define STATE_TAB X_MACRO(SCAN, 1) X_MACRO(READY, 5) X_MACRO(ADV, 7) X_MACRO(CONN, 18) X_MACRO(INIT, 20)typedef enum{ #define X_MACRO(a, b) a = b, STATE_TAB #undef X_MACRO}State_e;static bool is_valid(int state){ bool rst = false; switch (state) { #define X_MACRO(a, b) case a: STATE_TAB #undef X_MACRO rst = true; break; default: rst = false; } return rst;}void main(void){ int state = 5; printf("%d is valid: %d", state, is_valid(state)); state = 30; printf("%d is valid: %d", state, is_valid(state)); state = 18; printf("%d is valid: %d", state, is_valid(state)); state = 2; printf("%d is valid: %d", state, is_valid(state));}输出如下:
5 is valid: 130 is valid: 018 is valid: 12 is valid: 0苏州看皮肤病去哪里最好天津妇科专科医院哪里好
天津妇科医院哪里好
摇摆筛
武汉妇科专科医院
风热感冒咳嗽吃什么好的快
沙眼治疗
五一期间新冠病例增多,医生建议:感染后别拖,第一时间处理!
月经痛经
百姓健康
上一篇: 美国重夺超算第一!生命体实现百亿亿次E级超算,屠榜全球Top500
下一篇: 浅谈数字经济的心理
相关阅读
-
胡家“真优护”2022爱家来袭!一文解读产品全亮点
假优护杠杆系列产品构想CCTV版本”和“铁西街道假优护杠杆系列产品构想孩童版本”由《铁西街道假优护两全杠杆》、 《铁西街道外加假优护实质性病因杠杆》构成,具框架列产品负有以及系列产品背书事项,
-
《我的世界》静谧的四季模组详解!当mc冬天来临,玩者会被冻死!
喧闹的首集(Serene Seasons)是一款让《我的全世界》握有了一个真正首集的的系统,是从坚定本性mod当中再进一步分出来的一个独立的系统。 我们再进一步一次以Mi
- 10-22人社部:个人养老金实行个人账户制度,个人缴费实行全然积累
- 10-22正月十一 最美丽的祝福,送给一生一世的朋友!
- 10-22险企股票前扩军备战,想去吗?阳光保险大规模社招拉开序幕!
- 10-22《地下城与勇士》萌新玩家的游戏游乐园
- 10-22正月十一,一心一意的问候 一心一意的感谢
- 10-22原神:玩家玩爆发流?叠元素伤害和buff,短时间内一击必杀的街机版
- 10-22浙江实现数字人民币税费缴纳业务仅有场景落地
- 10-22宁波银保监局行政处罚信息公开所列(甬银保监罚决字〔2022〕40号)
- 10-22人社部:下半年跨省调剂养老保险基金545亿,有力支持了困难省份确保发放
- 10-22神回复:有什么行业可以让普通人迅速翻身?