я следующий код:ошибка: несовместимые типы при инициализации типа "структура ...
#include "stdio.h"
typedef struct StackEntry StackEntry;
typedef struct StackEntry
{
int data;
StackEntry *next;
};
StackEntry* createStack()
{
return NULL;
}
int main()
{
StackEntry *stack = createStack(); //Error: incompatible types when initializing type 'struct StackEntry *' using type 'StackEntry'
}
Я получаю ошибку incompatible types when initializing type 'struct StackEntry *' using type 'StackEntry'
, как показано выше. Я пересматриваю C через долгое время. Что я здесь делаю неправильно?
Edit (Супер извинения)
я излишне упрощен материал. Я чувствовал, что это поможет выделить код ошибки. У моей исходной настройки было много кода. Он тоже работал. Но теперь он сломался. Поэтому я собрал весь связанный код и поместил его сюда. Я должен был сначала попробовать положить все это в один файл и запустить. Мне очень жаль, что я этого не делал. Но теперь я удалил весь возможный код и смог воспроизвести ошибку. Вот оно:
algorithms.h
#ifndef ALGORITHMS_H_
#define ALGORITHMS_H_
StackEntry createStack();
#endif /* ALGORITHMS_H_ */
datastructures.h
#ifndef DATASTRUCTURES_H_
#define DATASTRUCTURES_H_
typedef struct StackEntry StackEntry;
struct StackEntry
{
int data;
StackEntry *next;
};
#endif /* DATASTRUCTURES_H_ */
stack.c
#include "datastructures.h"
#include "stdio.h"
StackEntry* createStack()
{
return NULL;
}
main.C
#include "datastructures.h"
#include "algorithms.h"
int main()
{
StackEntry *stack = createStack(); //Error: incompatible types when initializing type 'struct StackEntry *' using type 'StackEntry'
return 0;
}
Почему второй typedef есть, так как он будет игнорироваться? –
У вас все еще есть ошибка после удаления бесполезного второго 'typedef'? – jdarthenay
Ах, я пропустил это ...он не должен быть там ... btw почему компилятор не считал это ошибкой ...? – Mahesha999