搜索
bottom↓
回复: 7

程序的稳健与清晰-----标志位篇

[复制链接]

出0入0汤圆

发表于 2011-4-23 10:13:33 | 显示全部楼层 |阅读模式
各位大师好!想请教各位你们在写程序的时候,当多个功能模块要相互访问状态和变量,由于架构的原因功能模块要写到不同的文件里面,最常用的做法是设置标志位相互访问,但是如果程序量大一点,标志位就会很多。这样显得很冗余。
    请各位讲讲自己的心得,谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入147汤圆

发表于 2011-4-23 10:27:42 | 显示全部楼层
不加标志位你还能分出来模块吗?

对于内存大的,我用char/int作为bit标志位,改变状态的时候+1就ok了,用的时候只关心最低位。
对于双核的,还得加互斥,要不然两个核心同时访问同一内存,意外情况能愁死人。

出0入0汤圆

发表于 2011-4-23 14:36:36 | 显示全部楼层
enum最好了。
示例:
typedef enum {false = 0, true = 1} BOOLEAN;
typedef enum {CH = 0, EG = !CH} LANG_T;//language marks
typedef enum {DOC_NULL=1,DOC_SAVED,DOC_FULL} DOC_T;//doc marks
typedef enum {ERROR_CRC=1,ERROR_CALIB} ERROR_T;//operate status marks
typedef enum {ETRODE_REG=1,ETRODE_CLR} ETRODE_T;//electrode actions
typedef enum {TCNT_UP=1,TCNT_DOWN,TCNT_COMPLETE} TCNT_T;//timer counts models
typedef enum {AUTOFFMK_ON=1,AUTOFFMK_OFF=!AUTOFFMK_ON} AUTOFFMK_T;//control whether auto off
typedef enum {DA_MSUR=1,DA_REG,DA_STP} DAMODE_T;//da
typedef enum {ASC8=1,ASC16} DISPASC_T;
typedef enum {POWER_ON=0,POWER_OFF=!POWER_ON } POWER_T;
typedef enum {BLIGHT_ON=0,BLIGHT_OFF=!BLIGHT_ON } BLIGHT_T;
typedef enum {TIMR_ON=0,TIMR_OFF=!BLIGHT_ON } TIMR_T;
typedef enum {CALIB_NULL=1,CALIB_PT2=2,CALIB_PT3,CALIB_PT4} CALIB_T; //calibrate ponits,CALIB_NULL:no multiponits calibration
typedef enum {MODEL_MSRU=1,MODEL_CAL} MODEL_T;

出0入0汤圆

发表于 2011-4-23 16:14:25 | 显示全部楼层
楼上的头像......

出0入0汤圆

发表于 2011-4-23 22:18:25 | 显示全部楼层
jh

出0入0汤圆

发表于 2011-4-23 23:13:14 | 显示全部楼层
我和楼主有同样的疑问,我来学习一下

出0入0汤圆

 楼主| 发表于 2011-5-2 15:41:20 | 显示全部楼层
回复【2楼】Adrian
-----------------------------------------------------------------------

这个还是存在冗余问题,如何减少标志位

出0入14汤圆

发表于 2011-5-2 21:12:17 | 显示全部楼层
学习一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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