Problem beim linken von Dateien!
-
Hi Leute, ich hab ein Problem;
Ich versuche jetzt schon seit einiger (langer) Zeit ein Programm zum Laufen zu bringen. Das Programm funktioniert, wenn der gesamte Quellcode in einer Datei ist. Aber wenn ich versuche den Quellcode aufzuteilen funktioniert nichts mehr.Ich hab eine UART.c und UART.h, eine COM.c und COM.h, eine API.h und eine main.c
Die UART.c benötigt Sachen aus der UART.h und COM.h
Die COM.c benötigt Sachen aus der COM.h, UART.h und API.h
Die COM.h benötigt Sachen aus der API.hIn die main.c soll nur die API.h inkludiert werden, die dann mit den API Funktionen arbeiten kann.
Wenn ich das aber dann mache bekomme ich immer Fehlermeldungen von multiplen Definitionen und Ähnliches.
Bei den Sachen handelt es sich um "static structs".
Wenn mir da jemand weiter helfen könnte wäre mir wirklich sehr geholfen!
lg Tommy
-
Also wenn Dein Problem die Abhaengigkeiten zwischen den Files sind, versuch halt die entsprechenden .h in den .c's per #include in irgendeiner Reihenfolge zu deklarieren und dann das was er vorher (beim durcharbeiten durch die Dateien) noch braucht einfach "forward" an den entsprechend bemeckerten Stellen zu deklarieren.
-
Richtig!
Und es ist wichtig, in den Headers nur zu deklarieren.
Definieren darfst du ausschließlich in den .c-Files.
-
Also!
.h:
extern int a; void b();
.c:
int a; void b() {}
-
Okay, das hört sich ja schon mal sehr sehr hilfreich an, danke.
Also, wenn ich in einer Header Datei folgendes stehen hab und das in einer anderen Header Datei forward deklarieren wollte, wie würde das genau ausschauen? Mit dem int und der Funktion hab ichs verstanden, aber wie schauts mit structs aus?
Bsp:
static struct information_t {
char x;
char y;
...
} information;Das möchte ich gern forward in einer anderen Header Datei inkludieren und dann in nem C File nutzen! Muß ich da das ganze struct mit seinen einzelnen Komponenten deklarieren, oder wie genau schaut das aus? Danke für eure Antworten!!!!!!
Fg Tommy