我正在做作业,由于我们的约束非常严格,如果我想要 100%,我需要检查所有地方的 NULL
指针。所以我做了一个小的内联函数来检查 NULL
的指针:
static inline void exit_on_null(void* ptr, const char* msg) {
if ( ! ptr ) {
printf("%s\n", msg);
exit(1);
}
}
现在我问自己这样做安全吗?根据标准,我知道将指针转换为 void*
并返回并接收原始指针是省事的方法。这是否表明指针的 void*
版本仍然与 NULL
相当,或者是否存在一些我可以运行的陷阱?例如,以下是否始终为真?
ptr = NULL
(void*) ptr == NULL
最佳答案
我自己在标准中找到了答案:
6.3.2.3 Pointers
4 Conversion of a null pointer to another pointer type yields a null pointer of that type. Any two null pointers shall compare equal.
关于c - 将指针转换为 void* 然后与 NULL 进行比较是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510988/