声明和定义内部链接的对象和函数时均应使用 static 关键字
6.3.10 ID_missingStatic
声明和定义内部链接的对象和函数时均应使用 static 关键字,不可使用 extern 关键字,否则极易引起误解。
示例:
extern int a; // Non-compliant
....
static int a; // ‘a’ is a static object
static int b; // ‘b’ is a static object
....
extern int b; // Non-compliant
例中 a、b 是内部链接的静态对象,在定义的前后不可再用 extern 声明,否则极易与全域对象混淆。
又如:
int foo(int); // Bad, missing ‘static’
static int foo(int) {
....
}
static int bar(int);
int bar(int) { // Bad, missing ‘static’
....
}
在声明和定义内部链接的函数时,均应使用 static 关键字,否则也易引起误解。
参考
MISRA C 2004 8.11
MISRA C 2012 8.8
MISRA C++ 2008 3-3-2