2.1. 标准库
114.保留字和标准库函数不能重新定义或取消定义(R)
在C语言中存在一些保留标识符和函数名,在应用软件中,不能随意重新定义或者取消这些定义。例如在C语言中,存在一些重要的宏和变量:__LINE__,__FILE__,__FILE__,__DATA__,__TIME__,__STDC__,errno等。
#define __LINE__ 12 /* 与规则114冲突 */
#define break 1 /* 与规则114冲突 */
115.标准包名字不能被重新使用(R)
116.产品代码使用的所有的包应该遵循"MISRA Guidelines for the use of the C language in vehicle based software"的规定,并且遵循于相应的有效性确认(R)
117.传给包函数的值应该进行有效性检查(R)
118.不能使用动态堆内存分配(R)
这条规则要避免calloc,malloc,realloc和free函数的使用。
119.错误指示符errno不能被使用(R)
例如:
#include <errno.h>
void myfunc(void) {
errno = 0; /*与规则119冲突*/
}
120.<stddef.h>包中的宏offsetof不能被使用(R)
121.<local.h>和setlocal函数不能被使用(R)
122.setjmp宏和longjmp函数不能使用(R)
123.<signal.h>中的信号处理操作不能使用(R)
124.<stdio.h>输入输出包在产品代码中不能使用(R)
125.<stdlib.h>包中的atof,atoi,和atol不能使用(R)
126.<stdlib.h>包中的abort,exit,getenv,和system不能使用(R)
127.<time.h>包中的时间处理函数