J'ai une confusion à propos des structures externes. Je dois définir une instance globale de la structure dans un fichier autre que celui dans lequel la structure est définie (comme une variable RAM dont je ne sais pas exactement ce que c'est). Ci-dessous un exemple que GCC peut compiler et il fonctionne correctement tandis que Code Composer Studio donne des erreurs de compilation.Structures externes et en-têtes multiples
Je veux savoir où est le problème, comment compiler GCC et où/comment utiliser la déclaration extern.
Tout commentaire serait apprécié.
Person.h
#ifndef PERSON_H
#define PERSON_H
struct person {
int age;
};
typedef struct person PERSON;
void modifyPerson();
#endif // PERSON_H
personRam.h
#ifndef PERSONRAM_H
#define PERSONRAM_H
#include "person.h"
PERSON p1;
#endif // PERSONRAM_H
modifyPerson.c
#include "person.h"
#include "personRam.h"
void modifyPerson() {
p1.age = 10;
}
main.c
#include <stdio.h>
#include "person.h"
#include "personRam.h"
int main() {
modifyPerson();
printf("%d", p1.age);
return 0;
}
Pour avoir une structure externe, vous devez utiliser mot-clé 'extern' au moins une fois. Tu ne l'as pas fait. Alors, où est la structure externe? Nulle part. Vous avez des instances en double de cette structure. GCC est en train de trop pardonner pour vos erreurs. –
http://c-faq.com/decl/decldef.html – hmjd
@Vlad Lazarenko Où sont les doublons? Je l'ai déclaré une fois en personneRam.h. Ai-je tort? – groove