aihot  2017-05-09 20:01:57  OpenCV |   查看评论   

<规则14> 编写可重入函数时,应注意局部变量的使用(如编写C/C++语言的可重入函数时,应使用auto即缺省态局部变量或寄存器变量)。 
可重入性是指函数可以被多个任务进程调用。在多任务操作系统中,函数是否具有可重入性是非常重要的,因为这是多个进程可以共用此函数的必要条件。另外,编译器是否提供可重入函数库,与它所服务的操作系统有关,只有操作系统是多任务时,编译器才有可能提供可重入函数库。如DOS下BC和MSC等就不具备可重入函数库,因为DOS是单用户单任务操作系统。 
编写C/C++语言的可重入函数时,不应使用static局部变量,否则必须经过特殊处理,才能使函数具有可重入性。 

<规则15> 编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护。 
<规则16> 结构中的位域应尽可能相邻。结构中的位域在开始处应对齐撟纸跀或撟謹的边界。 
这样可减少结构占用的内存空间,减少CPU处理位域的时间,提高程序效率。 

示例:如下结构中的位域布局不合理。(假设例子在Intel CPU环境下) 
typedef struct _EXAMPLE_STRU 

unsigned int nExamOne : 6 ; 
unsigned int nExamTwo : 3 ; // 此位域跨越字节摻唤訑处。 
unsigned int nExamThree : 4 ; 
} _EXAMPLE ; 

应改为如下(按字节对齐)。 
typedef struct _EXAMPLE_STRU 

unsigned int nExamOne : 6 ; 
unsigned int nFreeOne : 2 ; // 保留bit位,使下个位域从字节开始。 
unsigned int nExamTwo : 3 ; // 此位域从新的字节处开始。 
unsigned int nExamThree : 4 ; 
} _EXAMPLE ; 

<规则17> 避免函数中不必要语句,防止程序中的垃圾代码,预留代码应以注释的方式出现。 
程序中的垃圾代码不仅占用额外的空间,而且还常常影响程序的功能与性能,很可能给程序的测试、维护等造成不必要的麻烦。 

<规则18> 通过对系统数据结构的划分与组织的改进,以及对程序算法的优化来提高空间效率。 
这种方式是解决软件空间效率的根本办法。 
示例:如下记录学生学习成绩的结构不合理。 
typedef unsigned char _UC ; 
typedef unsigned int _UI ; 

typedef struct _STUDENT_SCORE_STRU 

_UC szName[ 8 ] ; 
_UC cAge ; 
_UC cSex ; 
_UC cClass ; 
_UC cSubject ; 
float fScore ; 
} _STUDENT_SCORE ; 

因为每位学生都有多科学习成绩,故如上结构将占用较大空间。应如下改进(分为两个结构),总的存贮空间将变小,操作也变得更方便。 
typedef struct _STUDENT_STRU 

_UC szName[ 8 ] ; 
_UC cAge ; 
_UC cSex ; 
_UC cClass ; 
} _STUDENT ; 

typedef struct _STUDENT_SCORE_STRU 
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自常见C/C++编码规范(5)

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]