2011-04-13 87 views
2

指針和整數之間的比較,我得到一個警告警告:用C

warning: comparison between pointer and integer

從下一段代碼包含if行:

char cwd[1024]; 

if (getcwd(cwd, sizeof(cwd)) != (char*)NULL) 
    printf("%s\n",cwd); 
else 
    error_print("error in pwd"); 

怎麼和我需要做什麼修理?

+0

哪個編譯器? – BlackBear 2011-04-13 19:45:31

回答

8

您是否包含unistd.h?如果沒有,則會出現該錯誤,因爲您的C編譯器假定getcwd返回int。

修復?包括unistd.h

+0

我沒有得到任何錯誤,但只是警告,是否有任何原型def在stdio.h或stdlib.h ------------------------ ----- int getcwd(char * buf,size_t size); – cc4re 2013-03-31 11:43:03

+0

其他爲什麼它返回int – cc4re 2013-03-31 11:43:40

-1

在以下鏈接的返回類型部分,getcwd在失敗時返回null。因此,不是檢查!= (char *)NULL只是檢查!= NULL

http://linux.die.net/man/3/getcwd

+0

良好的做法,但它不會解決問題。 – 2011-04-13 19:49:09

-1

修改符合這一個if (getcwd(cwd, sizeof(cwd)) != NULL)

+0

良好的做法,但它不會解決問題。 – 2011-04-13 19:49:33

0

有你包括必要的.h,使編譯器瞭解什麼GETCWD回報?

您的c編譯器的行爲可能會假定每個未定義函數的int返回值。