我收到警告
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 :(得分: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
答案 4 :(得分:-1)
使用此if (getcwd(cwd, sizeof(cwd)) != NULL)