5

typedefされた構造体がファイルで宣言されています。それへのポインタがあり、グローバル変数として複数のファイルで使用したいと思います。誰かが私が間違っていることを指摘できますか?

fileA.h:

typedef struct
{
  bool                  connected;
  char                  name[20];
}vehicle;

extern vehicle *myVehicle;

fileA.c:

#include "fileA.h"
void myFunction(){
    myVehicle = malloc(sizeof(vehicle));
    myVehicle->connected = FALSE;
}

fileB.c:

#include "fileA.h"
void anotherFunction(){
   strcpy(myVehicle->name, "this is my car");
}

私が得るエラーは次のとおりです。

fileAで参照される未定義の外部「myVehicle」

4

1 に答える 1

12

これは宣言です:

extern vehicle *myVehicle; /* extern makes this a declaration,
                              and tells the compiler there is
                              a definition elsewhere. */

定義を追加します:

vehicle *myVehicle;

ちょうど1つの.cファイルに。

于 2012-11-17T23:02:52.273 に答える