问题
I get a warning
warning: comparison between pointer and integer
on the line containing if
from the next piece of code:
char cwd[1024];
if (getcwd(cwd, sizeof(cwd)) != (char*)NULL)
printf("%s\n",cwd);
else
error_print("error in pwd");
how and what do I need to fix?
回答1:
Do you include unistd.h? If not, the error appears because your C compiler is assuming getcwd returns int.
The fix? Include unistd.h
回答2:
The prototype of getcwd is
char *getcwd(char *buf, size_t size);
Make sure you include <unistd.h>
otherwise the return type would default to int
.
Here, even Ideone gives its Current Working Directory
回答3:
have you included the .h necessary so that the compiler understands what getcwd returns?
the behavior of your c compilers is probably to assume an int return value from every undefined function.
回答4:
In the return types section of the following link, getcwd returns null on failure. Thus, instead of checking for != (char *)NULL
just check for != NULL
http://linux.die.net/man/3/getcwd
回答5:
Modify line with this one if (getcwd(cwd, sizeof(cwd)) != NULL)
来源:https://stackoverflow.com/questions/5654685/warning-comparison-between-pointer-and-integer-in-c