C: undefined reference auf eine variable bei der Verwendung extern

Ich versuche, deklarieren Sie eine Globale variable config:

//general.h

struct config_t {
    int num;
};

extern struct config_t config;  //The global variable

Ich dann definieren config variable in general.c:

//general.c
#include "general.h"

struct config_t config = {
    num = 5;
};

Aber, wenn ich versuche, verwenden Sie die Globale variable 'config' in meiner main-Funktion, bekomme ich die Fehlermeldung:

undefined reference to `config':

Main Programm:

//main.c
#include "general.h"

main() {
    config.num = 10;
}

Warum ist das so?

  • Sie tun bekommen, die Fehler während der Kompilierung oder während der Verknüpfung?
  • Während die Verknüpfung
  • Um zu vermeiden, linker Fehler, immer mit header guards #ifndef MY_HEADER_H #define MY_HEADER_H /* contents */ #endif. Sie müssen diese in jeder header-Datei, die Sie jemals machen.
  • Und wie Sergej beantwortet (das ist der relevante Punkt in diesem Fall), vergessen Sie nicht, verknüpfen Sie alle Ihre code zusammen.
  • Ein header-guard helfen Ihnen nicht außerhalb einer compilation unit. Also "undefined reference" und "Neudefinition" von ld sind meist davon unberührt.
InformationsquelleAutor Halona | 2014-04-29
Schreibe einen Kommentar