我正在将AIX代码移植到Linux。我在AIX xlc编译器上遇到了一些将char与NULL进行比较的代码。相同的代码在Linux上产生编译错误。
有代码将double与NULL(d!= NULL)进行比较。
有人可以解释在AIX(xlc)上将char或double与NULL进行比较的语义。
答案 0 :(得分:3)
在AIX上使用xlc,“NULL”是“0”而不是“(void *)0”的宏,因此预处理器运行后的比较对char / int / double有效。
您可以在代码中使用xlc -E或gcc -E查看此内容。
永远不要将它用于任何事情 - 这只是琐事。修复您的代码,使其在非指针上下文中不使用NULL。