C - ошибка переопределения в Xcode
Мой заголовочный файл c имеет следующее сообщение об ошибке в Xcode
Redefinition of 'entry'
Но он прекрасно работает, когда я компилирую его gcc
в командной строке. Кто-нибудь из вас может объяснить, почему?
Это snapshot.h
:
#ifndef SNAPSHOT_H
#define SNAPSHOT_H
#define MAX_KEY_LENGTH 16
#define MAX_LINE_LENGTH 1024
typedef struct value value;
typedef struct entry entry;
typedef struct snapshot snapshot;
struct value {
value* prev;
value* next;
int value;
};
// the line below is where the redefinition error appears
struct entry {
entry* prev;
entry* next;
value* values;
char key[MAX_KEY_LENGTH];
};
struct snapshot {
snapshot* prev;
snapshot* next;
entry* entries;
int id;
};
#endif
Это снимок.c:
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include "snapshot.h"
int
main(int argc, char *argv[]){
int x = 7;
printf("x= %d\n" , x);
printf("value = %d\n", 1);
return 0;
}
1 ответ
Решение
entry
первоначально был зарезервирован как ключевое слово, а затем объявлен устаревшим. Поэтому старые компиляторы не позволяют этого (см. Этот вопрос). Измените имя структуры, и все должно быть хорошо.