警告:C中指针和整数之间的比较

时间:2011-04-13 19:42:05

标签: c pointers warnings getcwd

我收到警告

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");

我需要修理的方式和内容是什么?

5 个答案:

答案 0 :(得分:8)

你包括unistd.h吗?如果没有,则出现错误,因为您的C编译器假设getcwd返回int。

修复?包括unistd.h

答案 1 :(得分:4)

getcwd的原型是

char *getcwd(char *buf, size_t size);

请确保包含<unistd.h>,否则返回类型将默认为int

在这里,即使Ideone也会提供Current Working Directory

答案 2 :(得分:0)

你是否包含了必要的.h以便编译器理解getcwd返回的内容?

你的c编译器的行为可能是假定每个未定义函数的int返回值。

答案 3 :(得分:-1)

在以下链接的返回类型部分中,getcwd在失败时返回null。因此,只需检查!= (char *)NULL

,而不是检查!= NULL

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

答案 4 :(得分:-1)

使用此if (getcwd(cwd, sizeof(cwd)) != NULL)

修改行