Надеюсь, это простой вопрос ... Вот мой процесс воспроизведения этой проблемы.Сначала я создаю исходный файл:
bash $ cat t.c
#include "t.h"
int main()
{
ABC abc;
}
Затем я создаю соответствующий ему заголовочный файл:
bash $ cat t.h
#ifdef _T_H
#define _T_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct abc {
int a;
} ABC;
#ifdef __cplusplus
}
#endif
#endif
Затем я пытаюсь скомпилировать его:
bash $ gcc -o t t.c
t.c: In function ‘main’:
t.c:5: error: ‘ABC’ undeclared (first use in this function)
t.c:5: error: (Each undeclared identifier is reported only once
t.c:5: error: for each function it appears in.)
t.c:5: error: expected ‘;’ before ‘abc’
Что здесь происходит?Если я использую «struct abc» вместо «ABC» в качестве типа в tc, то он компилируется.Почему не работают typedefs?