在 AIX (xlc) 上将 char 与 NULL 进行比较是什么意思?

What is the meaning of comparing char to NULL on AIX (xlc)?

我正在将 AIX 代码移植到 Linux。我遇到了一些在 AIX xlc 编译器上将 char 与 NULL 进行比较的代码。相同的代码在 Linux 上给出了编译错误。

有代码将 double 与 NULL ( d != NULL) 进行比较。

有人可以解释在 AIX(xlc) 上将 char 或 double 与 NULL 进行比较的语义。

对于 AIX 上的 xlc,"NULL" 是“0”而不是“(void *)0”的宏,因此预处理器运行后的比较对 char/int/double 有效。

您可以在代码中使用 xlc -E 或 gcc -E 来查看。

切勿将此用于任何用途 - 这只是琐事。修复您的代码以在 non-pointer 上下文中不使用 NULL。