Eine *.c Datei in 1 x *.h und 2 x *.c splitten ?
-
Wie stell ich das an? muss ich auf irgendetwas (besonders) achten?
Die eine *.c Datei muss die header "includen"
aber hab beim besten willen keine ahnung wie ich das anstelle
habe da was von makefiles gelesen aber ich denke, dass es in meinem fall
viel einfacher geht.
Um etwas genauer zu werden geht es um doppelt verkettete listen...
habe jetz meine funktionen, die bildung der liste(n) und die ausgabe (bzw den
test ob alles gut gelaufen ist) in einer datei...
nun soll die DEFINITION der funktionen ( move_elem_head , add_elem_tail etc.. )
in der header datei liegen, die bildung der listen und die IMPLEMENTATION soll
in einer eigenen *.c datei liegen und die AUSGABE soll in einer weiteren *.c
datei sein...
diese sollen dann miteinander funktionieren....
aber kp wie und was
hoffe ihr habt verstanden was ich meine und könnt mir helfen
Danke
-
a) du legst eine Headerdatei a.h an.
b) du legst eine c-Datei b.c an.
c) du legst eine c-Datei c.c an.
d) in den c-Dateien stehen die Implementierungen der Funktionen
e) in die h-Datei kopierst du den Funktionskopf hinein (Prototyp/Deklaration)
f) du legst eine d.c Datei an
g) in dieser machst du eine #include -Anweisung
#include "a.h"
f) jetzt kannst du in der d-Datei die Funktionen z.B. in main aufrufen
g) Übersetzen z.B. mit gcc
gcc b.c c.c d.cZeh Mau
-
am anfang der header datei steht
#ifndef DLLHEADER_H ( der name der datei soll dllheader.h werden)
#define DLLHEADER_Hund am ende steht
#endif
richtig?
dazwischen dann den funktionskopf?
-
Genau!
#ifndef DLLHEADER_H #define DLLHEADER_H void funcBeispiel(void); #endif
-
in b.c
habe ich dann also einfach nur mehrere implementierungen aufgereiht wie
extern int list_empty(struct list_head *head) { if (head->next == head && head->prev == head) {printf("Die Liste ist leer."); return 1; //falls beide verweise auf head selbst zeigen dann leer } else { printf("Die Liste ist nicht leer."); return -1; } }
ohne main oder so?
-
Genau!
Es fehlt aber
#include <sdtio.h> für printf().list_empty ist ein typedef, oder?
Deine Struktur list_head muss auch noch deklariert werden.
Bestenfalls alle Deklarationen in die Header-Datei und überall inkludieren.
Besten Dank!
-
ahaaa
habs jetz hinbekommen
danke dir vielmals
-
Gerne