类型名称不应重复定义
6.1.6 ID_duplicatedTypeName
如果类型相关的名称有重复,极易引起误解,不利于阅读和维护,对于:
- C++ 类、联合体、枚举类型的名称
- C 结构体、联合体、枚举类型的标签名称
- 用 typedef 或 using 定义的类型别名
均不应重复定义。
示例:
typedef double A;
void foo() {
typedef float A; // Non-compliant
typedef short B;
....
}
void bar() {
typedef short B; // Non-compliant, even if they are identical
....
}
例外:
namespace N {
typedef double A;
}
namespace M {
typedef float A; // Compliant
}
如果类型定义处于不同的命名空间,可不受本规则约束。
参考
MISRA C 2004 5.3
MISRA C 2004 5.4
MISRA C 2012 5.6
MISRA C 2012 5.7
MISRA C++ 2008 2-10-3
MISRA C++ 2008 2-10-4