J'espère que c'est une question simple ... Voici mon processus pour reproduire ce problème. D'abord, je crée mon fichier source:C fichier d'en-tête inclure l'erreur
bash $ cat t.c
#include "t.h"
int main()
{
ABC abc;
}
Je crée mon fichier d'en-tête correspondant:
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
Ensuite, je tente de le compiler:
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’
Que se passe-t-il? Si j'utilise 'struct abc' au lieu de 'ABC' comme type dans t.c, alors il compile. Pourquoi les typedefs ne fonctionnent-ils pas?
Bingo. Wow, ouais, ce petit bout de foiré. Bien, espérons que quelqu'un d'autre qui a ce problème verra ce fil :) – Scott
BTW, ne pas utiliser des choses commençant par un trait de soulignement, ou contenant un double trait de soulignement, pour vos gardes d'en-tête. Ces noms sont réservés à l'utilisation de la bibliothèque standard. Juste 'T_H' fait très bien l'affaire. –