声明与定义-中国县域统计年鉴2016(乡镇卷)

时间:2024-06-23 12:01:06
【文件属性】:

文件名称:声明与定义-中国县域统计年鉴2016(乡镇卷)

文件大小:457KB

文件格式:PDF

更新时间:2024-06-23 12:01:06

MISRA

6.8 声明与定义 规则 8.1(强制): 函数应当具有原型声明,且原型在函数的定义和调用范围内都是可见 的。 [未定义 22、23] 原型的使用使得编译器能够检查函数定义和调用的完整性。如果没有原型,就不会迫使 编译器检查出函数调用当中的一定错误(比如,函数体具有不同的参数数目,调用和定义之 间参数类型的不匹配)。事实证明,函数接口是相当多问题的肇因,因此本规则是相当重要的。 对外部函数来说,我们建议采用如下方法,在头文件中声明函数(亦即给出其原型),并 在所有需要该函数原型的代码文件中包含这个头文件(见规则 8.8)。 为具有内部链接的函数给出其原型也是良好的编程实践。 规则 8.2(强制): 不论何时声明或定义了一个对象或函数,它的类型都应显式声明。 extern x; /* Non-compliant – implicit int type */ extern int16_t x ; /* Compliant – explicit type */ const y ; /* Non-compliant – implicit int type */ const int16_t y ; /* Compliant – explicit type */ static foo (void) ; /* Non-compliant – implicit type */ static int16_t foo (void) ; /* Compliant – explicit type */ 规则 8.3(强制): 函数的每个参数类型在声明和定义中必须是等同的,函数的返回类型 也该是等同的。 [未定义 24;Koenig 59 – 62] 参数与返回值的类型在原型和定义中必须匹配,这不仅要求等同的基本类型,也要求包 含 typedef 名称和限定词在内的类型也要相同。 规则 8.4(强制): 如果对象或函数被声明了多次,那么它们的类型应该是兼容的。 [未定义 10] 兼容类型的定义是冗长复杂的(详见 ISO 9899 :1990 [2],节 6.1.2.6、6.5.2、6.5.3、6.5.4)。 两个等同的类型必然是兼容的,而两个兼容的类型不需要等同。例如,下面的类型对是兼容 的: signed int int char[5] char [] unsigned short int unsigend short 规则 8.5(强制): 头文件中不应有对象或函数的定义。 头文件应该用于声明对象、函数、typedef 和宏,而不应该包含或生成占据存储空间的对 象或函数(或它们的片断)的定义。这样就清晰地划分了只有 C 文件才包含可执行的源代码, 而头文件只能包含声明。 规则 8.6(强制): 函数应该声明为具有文件作用域。 [未定义 36]


网友评论