- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10 预处理指令 规范10.5 宏不能用于定义语句,或部分语句,除了do-while 结 构。宏也不能重定义语言的语法。 例:#define CLOCK (XSTAL / 16) /* OK:定义表达式 */ #define PLUS2(X) ( (X) + 2 ) /* OK:扩展表达式 */ #define READ_TIME_32() do { … } while(0) /* example of do-while-zero */ #define INT32U long /* NG:使用宏定义了, 应该使用typedef */ #define STARTIF if ( /* NG:定义部分语句 */ 规范10.6 增加调试语句应该放在调试开关内。 调试代码不需要提交给客户,因此应该用宏封起来,避免与Release代码混在一起(定义调试开关的位置需要注意)。例: #ifdef DEBUG_FUNC1 /* Modified by XXX on 05-10-10*/ 调试代码1; …… #endif 附录:关于排版和注释 谢谢! * * * 1、编码规范是编码准则,它注重于程序的物理结构和外观,而不是程序的逻辑结构。 * 1、文件头是对源文件及头文件基本信息的描述,其中包括文件名、使用处理器型号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 这些信息以注释的方式放置在文件的最开始部分。 * 1、标识符是用来标识变量名、符号常量名、函数名、数组名、文件名等的有效字符序列。 2、.tbl 文件,表格类数据的定义。 * * * 1、变量为多个类型的复合类型时,按照编译器结合的顺序进行前缀的结合。 * * * * * * * 禁止使用int数据类型。因为在16位的操作系统上int类型的宽度是16bit,在32位的操作系统上int类型的宽度是32bit,移植重用时就会产生问题。 * 1、把一个值赋给与其类型不同的变量时,右服从左。 * 1、例1,意图不明。例2,破坏数据的完整性。 * * * * NULL作为特殊的指针变量,表示不指向任何东西。 * 定义调试开关的位置应该是相关的头文件里(影响到多个C文件)或者C文件(影响到一个C文件)的前部。 * * * 2 命名规范 规范2.1 关于文件标识符命名规则,请遵照以下规范: 文件标识符分为两部分,即文件名前缀和后缀。格式如下: ×××……××.××× 1)文件名前缀表示该文件的内容或作用,可以由项目组成员统一约定。最好不要超过8 个字符;文件名前缀的最前面要使用范围限定符——模块名(文件名)缩写; 2)文件名后缀表示该文件的类型,该部分最多为3 个字符: 1)源文件:.c; 2)头文件:.h; 3)其它类型文件:如.tbl 文件等,使用之前进行统一规定。 3)前缀和后缀这两部分字符应仅使用字母、数字和下划线。文件标识的长度不能超过32 个字符,以便于识别; 规范2.2 关于模块标识符命名规则: 1、模块名就是范围限定符,各种全局标识符(文件名、全局 函数名、全局变量名等)的命名,必须使用范围限定符作 为前缀。 2、模块名必须进行适当的缩写。例如Stand By 模块,省略缩 写为STBY; 3、模块名要求全部为大写。 规范2.3 关于C标识符命名规则,请按照「标识符前缀」 +「含义 标识」规范进行命名。 「标识符前缀」由以下元素构成,各部分内容需要遵守相应定义: 范围限定符前缀 + 作用域前缀 + 数据类型前缀 + 含义标识 「标识符前缀」 范围限定符前缀的形式为:模块名 + 下划线,即模块名_ 2 命名规范 2 命名规范 作用域前缀: NO 标识符类型 作用域前缀 1 Global Variable W 2 File Static Variable n 3 Function Static Variable fn 4 Auto Variable a 5 Global Function w 6 Static Function n 数据类型前
文档评论(0)