2586|0

362

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

如何能编好单片机的程序(10) [复制链接]

 #ifdef SOLARIS2_5
   typedef boolean_t   BOOL_T;
  #else
   typedef int      BOOL_T;
  #endif
  
  typedef short      INT16_T;
  typedef unsigned short UINT16_T;
  typedef int       INT32_T;
  typedef unsigned int  UINT32_T;
  
  #ifdef WIN32
   typedef _int64    INT64_T;
  #else
   typedef long long   INT64_T;
  #endif
  
  typedef float      FLOAT32_T;
  typedef char*      STRING_T;
  typedef unsigned char  BYTE_T;
  typedef time_t     TIME_T;
  typedef INT32_T     PID_T;
  
使用typedef的其它规范是,在结构和函数指针时,也最好用typedef,这也有利于程序的易读和可维护性。如:
  typedef struct _hostinfo {
    HOSTID_T  host;
    INT32_T  hostId;
    STRING_T  hostType;
    STRING_T  hostModel;
    FLOAT32_T cpuFactor;
    INT32_T  numCPUs;
    INT32_T  nDisks;
    INT32_T  memory;
    INT32_T  swap;
  } HostInfo;
  typedef INT32_T (*RsrcReqHandler)(
   void *info,
   JobArray *jobs,
   AllocInfo *allocInfo,
   AllocList *allocList);
C++中这样也是很让人易读的:
  typedef CArray HostInfoArray;
于是,当我们用其定义变量时,会显得十分易读。如:
  HostInfo* phinfo;
  RsrcReqHandler* pRsrcHand;
这种方式的易读性,在函数的参数中十分明显。
关键是在程序种使用typedef后,几乎所有的程序中的类型声明都显得那么简洁和清淅,而且易于维护,这才是typedef的关键。

26、为常量声明宏
--------
最好不要在程序中出现数字式的"硬编码",如:
  int user[120];
  
为这个120声明一个宏吧。为所有出现在程序中的这样的常量都声明一个宏吧。比如TimeOut的时间,最大的用户数量,还有其它,只要是常量就应该声明成宏。如果,突然在程序中出现下面一段代码,
  for ( i=0; i<120; i++){
    ....
  }
120是什么?为什么会是120?这种"硬编码"不仅让程序很读,而且也让程序很不好维护,如果要改变这个数字,得同时对所有程序中这个120都要做修改,这对修改程序的人来说是一个很大的痛苦。所以还是把常量声明成宏,这样,一改百改,而且也很利于程序阅读。
  #define MAX_USR_CNT 120
  
  for ( i=0; i     ....
  }
这样就很容易了解这段程序的意图了。
有的程序员喜欢为这种变量声明全局变量,其实,全局变量应该尽量的少用,全局变量不利于封装,也不利于维护,而且对程序执行空间有一定的开销,一不小心就造成系统换页,造成程序执行速度效率等问题。所以声明成宏,即可以免去全局变量的开销,也会有速度上的优势。
此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表