《MISRA-C 2004工业标准化的C编程规范》笔记——常量、声明与定义
来源:互联网 发布:数据修约标准 编辑:程序博客网 时间:2024/05/22 13:45
目录
- 目录
- 常量
- 声明与定义
常量
规则7.1(强制):不应使用八进制常量(0除外)和八进制escape序列。
任何以0开始的整型常量都被看做是八进制的。
如:
052——八进制,即为十进制的42。
声明与定义
规则8.1(强制):函数应当具有原型声明,且原型在函数的定义和调用范围内都是可见的。
建议:
在头文件中声明函数(即给出其原型),并在所有需要该函数原型的代码文件中包含这个头文件。
为具有内部链接的函数给出其原型也是良好的编程实践。
规则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(强制):函数的每个参数类型在声明和定义中必须是等同的,函数的返回类型也应是等同的。
参数和返回值的类型在原型和定义中必须是匹配的。
要求:等同的基本类型,包含typedef名称和限定词在内的类型也要相同。
规则8.5(强制):头文件不应有对象或函数的定义。
头文件:用于声明对象、函数、typedef和宏,不应包含或生成占据存储空间的对象或函数的定义。
这样就清晰的划清了:
只有C文件才包含可执行的源代码,
头文件只能包含声明。
规则8.6(强制):函数应该声明为具有文件作用域。
在块作用域中声明函数,会引起混淆并可能导致未定义的行为。
规则8.7(强制):如果对象的访问只是在单一的函数中,那么对象应该在块范围内声明。
可能的情况,对象的作用域应该限制在函数内。
只有当对象需要具有内部或外部链接时才能为期使用文件作用域——全局变量,尽量不用。
规则8.8(强制):外部对象或函数应该声明在唯一的文件中。
任何一个外部对象或函数,都只能在一个头文件中声明。
规则8.10(强制):在文件范围内声明和定义的所有对象或者函数应该具有内部链接,除非是在需要外部链接的情况下。
一个变量只是在被同一个文件中的函数所使用,那么就是用static。
如果一个函数只是在同一个文件中的其他地方调用,那么就用static.
使用static存储类表示符,将确保:
标识符只是在声明它的文件中使可见的,
避免了和其他文件或库中的相同标识符发生混淆的可能性。
规则8.11(强制):static存储类标识符应该用于具有内部链接的对象和函数的定义和声明。
把static关键字一致地在所有具有内部链接的对象和函数的声明上。
规则8.12(强制):当一个数组声明为具有外部链接,他的大小应该显式声明或初始化进行隐式定义。
int array1[10] ; /* Compliant */extern int array2[] ; /* Not compliant */int array2[] = { 0, 10, 15 }; /* Compliant */
- 《MISRA-C 2004工业标准化的C编程规范》笔记——常量、声明与定义
- 《MISRA-C 2004工业标准化的C编程规范》笔记——背景、范围、简介
- misra c规范作为工业标准的C编程规范
- MISRA工业标准C语言编程规范
- MISRA工业标准C语言编程规范
- MISRA工业标准C语言编程规范
- MISRA--作为工业标准的C编程规范
- MISRA--作为工业标准的C编程规范
- MISRA--作为工业标准的C编程规范
- MISRA--作为工业标准的C编程规范
- [转]MISRA--作为工业标准的C编程规范
- MISRA--作为工业标准的C编程规范
- 《MISRA-C 2004 工业标准的C编程规范》-初始化规则
- [ZT]MISRA的C编程规范
- MISRA C 2004安全规范
- MISRA C编程规范(一)
- MISRA C编程规范(2)
- Misra-c 整理笔记
- springboot快速入门
- 低碳生活大奖赛
- NOIP 2016 提高组 初赛
- .Netcore之日志组件Log4net、Nlog性能比较
- FP_TREE和FP_GROWTH算法
- 《MISRA-C 2004工业标准化的C编程规范》笔记——常量、声明与定义
- Muduo编译步骤
- Java数据类型和MySql数据类型对应表
- Qt画箭头
- typedef在结构体定义中的使用
- 什么是XP,介绍XP,敏捷扫盲XP(Extreme Programming)。
- hdu 6197 最长上升子序列 o(nlog(n))版
- CODEVS--1203判断浮点数是否相等
- Python爬取知乎日报,推送到kindle