声明中不应包含过多的指针嵌套
6.10.2 ID_tooManyPtrLevel
指针嵌套层级过多意味着指针的解引用逻辑过于复杂,相关代码将难以理解,指针嵌套不宜超过 2 级。
示例:
T *** x; // Bad
T * volatile * * const * y; // Terrible
例中 T 为任意类型,如果发现这种指针,意味着需要改进对相关数据的访问方式。
出于灵活性的考虑,非连续的指针嵌套可不受本规则约束,如:
int** (*pa)[100]; // Let it go
int** (*pf)(int); // Let it go
例中 pa 是指向数组的指针,数组元素为 2 级指针,pf 是函数指针,函数返回 2 级指针,这种情况是可接受的。
配置
maxPtrLevel: 指针嵌套的最大层数,超过则报出
相关
参考
MISRA C 2004 17.5
MISRA C 2012 18.5