5 votes

C Pointeur de structure globale

J'ai une structure déclarée dans un fichier en tant que typedef. J'ai un pointeur vers celle-ci et je veux l'utiliser dans plusieurs fichiers en tant que variable globale. Quelqu'un peut-il me dire ce que je fais de mal?

fileA.h:

typedef struct
{
  bool                  connecté;
  char                  nom[20];
}véhicule;

extern véhicule *monVehicule;

fileA.c:

#include "fileA.h"
void maFonction(){
    monVehicule = malloc(sizeof(véhicule));
    monVehicule->connecté = FALSE;
}

fileB.c:

#include "fileA.h"
void uneAutreFonction(){
   strcpy(monVehicule->nom, "c'est ma voiture");
}

L'erreur que je reçois est:

Extern "monVehicule" indéfini mentionné dans fileA

12voto

hmjd Points 76411

Ceci est une déclaration:

extern vehicle *myVehicle; /* extern rend cela une déclaration,
                              et indique au compilateur qu'il y a
                              une définition ailleurs. */

Ajoutez une définition:

vehicle *myVehicle;

à exactement un fichier .c.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X