предупреждение: сравнение между указателем и целым числом в C - PullRequest
1 голос
/ 13 апреля 2011

Я получаю предупреждение

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 ]

8 голосов
/ 13 апреля 2011

Включаете ли вы unistd.h? Если нет, то ошибка появляется, потому что ваш компилятор C предполагает, что getcwd возвращает int.

Исправление? Включить unistd.h

4 голосов
/ 13 апреля 2011

Прототип getcwd равен

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

Убедитесь, что вы включили <unistd.h>, иначе тип возвращаемого значения по умолчанию будет int.

Здесь дажеIdeone дает Текущий рабочий каталог

0 голосов
/ 13 апреля 2011

Вы включили необходимый .h, чтобы компилятор понимал, что возвращает getcwd?

поведение ваших c-компиляторов, вероятно, предполагает получение значения int, возвращаемого каждой неопределенной функцией.

0 голосов
/ 13 апреля 2011

Изменить строку с этим if (getcwd(cwd, sizeof(cwd)) != NULL)

0 голосов
/ 13 апреля 2011

В разделе возвращаемых типов следующей ссылки getcwd возвращает null при ошибке. Таким образом, вместо проверки на != (char *)NULL просто проверьте на != NULL

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

...