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''的等價物,這就是你應該改變你的代碼來使用。 –