不应使用常量 0 表示空指针
14.12 ID_zeroAsPtrValue
在 C 代码中应使用 NULL 表示空指针,在 C++ 代码中应使用 nullptr 表示空指针。
标准允许 0、'\0'、false、1 - 1 等值为 0 的常量表达式作为空指针常量,但易与非指针混淆,不利于阅读和维护。
示例:
int* p;
void foo(int*);
p = 0; // Non-compliant
foo(0); // Non-compliant
应改为:
p = NULL; // Compliant in C
foo(nullptr); // Compliant in C++
相关
依据
ISO/IEC 9899:1999 6.3.2.3(3)
ISO/IEC 9899:2011 6.3.2.3(3)
ISO/IEC 14882:2003 4.10(1)
ISO/IEC 14882:2011 4.10(1)
参考
C++ Core Guidelines ES.47
MISRA C 2012 11.9
MISRA C++ 2008 4-10-2