1

我收到警告

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

我需要如何解决以及需要解决什么问题?

4

5 回答 5

8

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

修复?包括 unistd.h

于 2011-04-13T19:47:06.557 回答
4

getcwd的原型是

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

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

在这里,甚至 Ideone 也提供了它的当前工作目录

于 2011-04-13T19:50:35.663 回答
0

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

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

于 2011-04-13T19:48:53.013 回答
-1

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

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

于 2011-04-13T19:47:20.917 回答
-1

用这个修改行if (getcwd(cwd, sizeof(cwd)) != NULL)

于 2011-04-13T19:47:56.603 回答