0
我将AIX代码移植到Linux。我遇到了一些将AIX xlc编译器中的char与NULL进行比较的代码。相同的代码给Linux编译错误。在AIX(xlc)上比较char和NULL的含义是什么?
有代码将NULL与NULL进行比较(d!= NULL)。
有人可以解释在AIX(xlc)上比较char或double与NULL的语义。
我将AIX代码移植到Linux。我遇到了一些将AIX xlc编译器中的char与NULL进行比较的代码。相同的代码给Linux编译错误。在AIX(xlc)上比较char和NULL的含义是什么?
有代码将NULL与NULL进行比较(d!= NULL)。
有人可以解释在AIX(xlc)上比较char或double与NULL的语义。
使用AIX上的xlc,“NULL”是“0”而不是“(void *)0”的宏,所以预处理器运行后的比较对于char/int/double是有效的。
您可以在代码中使用xlc -E或gcc -E来查看。
千万不要使用它 - 这只是琐事。修正你的代码在非指针上下文中不使用NULL。
“char”是指变量声明为char而不是像char *一样的指针吗?你会得到什么错误?编译器告诉你什么信息说明? XLC编译器只编译C代码,还是C++代码? –
AIX/xlC上的NULL没有什么特别之处。只是糟糕的代码。 –
Lorinczy的含义是什么covener的答案 - NULL是松散的而不是严格定义的。所以你和char的比较只是检查'd!='\ 0''的等价物,这就是你应该改变你的代码来使用。 –