Hallo,
um eine Funktion zu verwenden brauchst du zwei Dinge:
1. Deklaration
Das brauchen alle anderen Funktionen (in diesem Fall main()), um deine Funktion zu kennen, und wissen wie man sie aufruft.
2. Definition
Das ist die "Implementierung" deiner Funktion, also der Tatsächliche Code.
Die Definition kann man in andere Kompilationseinheiten auslagern, das heißt in andere .c files, aber auch in Bibliotheken (.a/.so, .lib/.dll).
Die Deklaration muss in der Kompilationseinheit verfügbar sein, die die Funktion verwendet, das macht man meist mit einem Include.
Eine hello.c ist ein einfaches C-File mit deiner Funktion drinnen
hello.c:
Code: Alles auswählen
#include <stdio.h>
void helloworld()
{
printf("Hello World!\n");
}
Hier habe ich die <stdio.h> inkludiert, da dieses C-File ja printf() verwendet.
Ein hello.h sieht im einfachsten Fall so aus:
Dies reicht eigentlich schon aus, nur kann es passieren dass es mehrfach inkludiert wird - dann gibt es in manchen Fällen Compilerfehler wegen Mehrfachdeklarationen. Dagegen kann man sogenannte "Include Guards" einbauen, das sieht so aus:
Code: Alles auswählen
#ifndef HELLOWORLD_H_INCLUDED
#define HELLOWORLD_H_INCLUDED
void helloworld();
#endif /* ifndef HELLOWORLD_H_INCLUDED */
Das macht folgendes: das ganze ding wird nur gelesen, wenn das Makro HELLOWORLD_H_INCLUDED
nicht definiert ist. Wenn es nicht definiert wird, dann ist das erste was es macht es zu definieren. Dadurch wird sichergestellt, das der Header nur ein einziges mal geparst wird.
Das musst du noch in die main.c inkludieren
Bemerke: hier habe ich <stdio.h>
nicht inkludiert, es wird hier nicht benötigt! Ich rufe ja nur helloworld() auf, und nur das muss ich kennen.
Probier das mal aus, und bei den ersten unverständlichen Linkerfehlern (bitte mit Fehlermeldung reinkopiert) meldest du dich mal. Dann machen wir weiter
