2016-01-22 36 views
0

我将AIX代码移植到Linux。我遇到了一些将AIX xlc编译器中的char与NULL进行比较的代码。相同的代码给Linux编译错误。在AIX(xlc)上比较char和NULL的含义是什么?

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

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

+1

“char”是指变量声明为char而不是像char *一样的指针吗?你会得到什么错误?编译器告诉你什么信息说明? XLC编译器只编译C代码,还是C++代码? –

+0

AIX/xlC上的NULL没有什么特别之处。只是糟糕的代码。 –

+0

Lorinczy的含义是什么covener的答案 - NULL是松散的而不是严格定义的。所以你和char的比较只是检查'd!='\ 0''的等价物,这就是你应该改变你的代码来使用。 –

回答

3

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

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

千万不要使用它 - 这只是琐事。修正你的代码在非指针上下文中不使用NULL。

相关问题