Xcode: тип 'struct dirent' имеет несовместимые определения в разных единицах перевода - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь построить программу с заголовочным файлом xv6 fs.h.

В моем проекте XCode есть только три файла: type.h (без изменений), fs.h (без изменений) и main.c, как показано ниже.

#include <stdio.h>
#include "types.h"
#include "fs.h"
int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    return 0;
}

Использование gcc в командной строке gcc -o main main.c -I . успешно скомпилировать эту программу, но Xcode продолжает выдавать ошибку (ошибка Apple LLVM 9.0) в fs.h:

Тип 'struct dirent' имеет несовместимые определения в разных единицах перевода

Если я заменим struct dirent имя в fs.h на любые другие имена, он может построить.

Как я могу это исправить?

Редактировать

Выход работает gcc -o main main.c -I . -H.

. /usr/include/stdio.h
.. /usr/include/_stdio.h
... /usr/include/sys/cdefs.h
.... /usr/include/sys/_symbol_aliasing.h
.... /usr/include/sys/_posix_availability.h
... /usr/include/Availability.h
.... /usr/include/AvailabilityInternal.h
... /usr/include/_types.h
.... /usr/include/sys/_types.h
..... /usr/include/machine/_types.h
...... /usr/include/i386/_types.h
..... /usr/include/sys/_pthread/_pthread_types.h
... /usr/include/sys/_types/_va_list.h
.... /usr/include/machine/types.h
..... /usr/include/i386/types.h
...... /usr/include/sys/_types/_int8_t.h
...... /usr/include/sys/_types/_int16_t.h
...... /usr/include/sys/_types/_int32_t.h
...... /usr/include/sys/_types/_int64_t.h
...... /usr/include/sys/_types/_u_int8_t.h
...... /usr/include/sys/_types/_u_int16_t.h
...... /usr/include/sys/_types/_u_int32_t.h
...... /usr/include/sys/_types/_u_int64_t.h
...... /usr/include/sys/_types/_intptr_t.h
....... /usr/include/machine/types.h
...... /usr/include/sys/_types/_uintptr_t.h
... /usr/include/sys/_types/_size_t.h
... /usr/include/sys/_types/_null.h
... /usr/include/sys/stdio.h
.. /usr/include/sys/_types/_off_t.h
.. /usr/include/sys/_types/_ssize_t.h
.. /usr/include/secure/_stdio.h
... /usr/include/secure/_common.h
. ./types.h
. ./fs.h

Вот сообщение об ошибке из Xcode:

error error

При нажатии «Файл с именем« d_ino »здесь» появляется редактор Xcode sys/dirent.h. Означает ли это, что он конфликтует с определением системы macOS?

dirent.h

...