0

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

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

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

4

1 回答 1

3

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

您可以在代码中使用 xlc -E 或 gcc -E 看到这一点。

永远不要将它用于任何事情 - 这只是琐事。修复您的代码,使其不在非指针上下文中使用 NULL。

于 2016-01-23T04:56:02.393 回答