Программа на C показывает конфликтующий тип в функции в заголовочном файле и определяется в файле c - PullRequest
0 голосов
/ 26 марта 2019

Я получаю ошибку конфликтующего типа в C, но я не вижу, как существует конфликтующий тип в объявлении и определении той же функции.

file_utils.h

    bool is_relative_path(struct dirent *ent);

file_utils.c

    bool is_relative_path(struct dirent *ent){
        return (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0);
    }

Ошибка:

    abhiram@abhiram-Lenovo-G50-70:~/libpostal-master/src$ gcc -DLIBPOSTAL_DATA_DIR='"$/home/abhiram/libpostal-master/data"' -o main  main.c libpostal.c file_utils.c string_utils.c json_encode.c -std=c99 -w  

    file_utils.c:42:6: error: conflicting types for ‘is_relative_path’
    bool is_relative_path(struct dirent *ent){
         ^
    In file included from file_utils.c:1:0:
    file_utils.h:59:6: note: previous declaration of ‘is_relative_path’ was here
    bool is_relative_path(struct dirent *ent);
         ^                                              

Функция объявлена ​​в заголовочном файле и определена в файле c, в ней по-прежнему отображается ошибка конфликтующего типа

Редактировать: в обоих файлах были включены dirent.h и stdbool.h.

1 Ответ

2 голосов
/ 26 марта 2019

Последующие ошибки дают вам соответствующую подсказку: struct dirent был только объявлен, но не определен.Вам необходимо включить соответствующий заголовок (dirent.h).

Кроме того, вам, вероятно, не удалось включить stdbool.h в заголовок (и вместо этого включить его в файл реализации, возможно косвенно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...