Заголовочный файл C включает ошибку - PullRequest
2 голосов
/ 11 декабря 2010

Надеюсь, это простой вопрос ... Вот мой процесс воспроизведения этой проблемы.Сначала я создаю исходный файл:

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?

1 Ответ

9 голосов
/ 11 декабря 2010

Попробуйте:

#ifndef _T_H
#define _T_H

Я случайно заметил это, потому что _T_H не выстроился в линию, и мое подсознание знало, что должно.

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