最佳实践:如何在C / C ++中检查NULL返回值

这是C和C ++的样式问题。 你比较喜欢哪个

void f() { const char * x = g(); if (x == NULL) { //process error } // continue function } 

或这个:

 void f() { const char * x = g(); if (! x) { //process error } // continue function } 

? 前者更清晰,但后者则不那么冗长。

它主要取决于您工作组中采用的惯例

由于!= NULLforms对于习惯它的开发人员可能更清楚,对于习惯于使用布尔forms检查NULL值的开发人员来说,反之亦然。

正如@Andy Prowl所提到的那样,通过使用nullptr类型,在C ++ 11中使用这个更加清晰的版本: if (x == nullptr) 。 如果您正在编写C ++ 11应用程序,那么这个表示法应该被团队的每个成员用作约定。

最后,存在几种非常常用的模式,例如Null Object Pattern ,避免在代码中的任何地方进行检查,以防此检查涉及应用程序的特定习惯。