Hej Lasse
Tak, det hjalp!!!
Mvh / Preben
Lasse Westh-Nielsen wrote:
> "Preben Holm" <64bitNOSPAM@mailme.dk> wrote:
>
>
>>Er der nogen der kan fortælle hvad en header-fil egentlig definerer helt
>>konkret!!!
>
>
> Kig i Kernighan&Ritchie: "The C Programming Language", kapitel 4, side 82.
>
> Headerfiler indeholder definitioner og deklarationer, som bruges i flere
> forskellige source filer.
>
> Hvis du fx har lavet en implementation af en stak-datastruktur:
>
> /* stak.c */
> #include "stak.h"
> int count = 0;
> int stak[STAKMAX];
> void push(int i)
> {
> stak[count++] = i;
> }
> int pop()
> {
> return stak[count--];
> }
> int size()
> {
> return count;
> }
>
> - og du har lyst til at skrive et program der bruger din stak, så er det
> smart at lave en headerfil der indeholder de vigtigste funktionskald og
> definitioner du kan bruge på stakken, fx:
>
> /* stak.h */
> #define STAKMAX 1000
> void push(int i);
> int pop();
> int size();
>
> Dit stakbruger program kan så inkludere stak.h og bruge disse
> funktionsprototyper under kompileringen:
>
> /* stakuser.c */
> #include "stak.h"
> int main()
> {
> if (size() < STAKMAX) push(5);
> int a;
> if (size() > 0) a = pop();
> }
>
> Læg mærke til at der ingen forbindelse er mellem stakuser.c og stak.c!!
>
> Der er ingen forskel på, om du skrev funktionsprototyperne i toppen at dit
> stakbrugerprogram, eller om du inkluderer headeren; #include er kun en
> tekstuel ting der putter indholdet af det du inkluderer ind på den plads
> hvor #include'en står.
> Men, hvis du bruger en header kan du nøjes med at ændre eet sted hvis du vil
> ændre prototyperne - hvis fx du har flere stakbrugerprogrammer.
> En anden ting er, når du benytter flere source filer, så skal du på en eller
> anden måde binde dem sammen. Funktionsprototyperne er en måde at sige: "når
> vi linker vil de her funktioner være til stede. så nu kan du compile dine
> små filer (compilationunits), og så lover vi at når du linker det hele så
> går alt godt". Så du kan compilere stak.c og stakuser.c separat, og derefter
> linke dem til eet program. Hvis du sidder og fumler meget med den ene, så
> kan du så kompilere den for sig, og derved spare tid i forhold til hvis du
> skulle kompilere hele dit "store" stak-projekt
>
> Jeg håber det var dækkende.
>
> Mvh Lasse
>
>
> --
> Lasse Westh-Nielsen
> lasse@daimi.au.dk
>
>
>