繁体   English   中英

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

[英]warning: comparison between pointer and integer in 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");

我需要如何以及如何解决?

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

解决办法? 包括unistd.h

getcwd的原型是

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

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

在这里,甚至Ideone也给出了其当前工作目录

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM