Dingen meer dan één keer definiëren mag niet. Ik heb het over de programmeertaal C.
Hierover heb ik een vraag. Vast een newbie vraag, maar met de search kwam ik niet ver.
Als ik een header file 2 keer gebruik dan krijg ik een melding over dubbele definities. Helaas kan ik dat niet altijd vermijden.
Voorbeeld:
Stel ik heb een functie1.h en een functie2.h, die definities bevatten voor functie1.c en functie2.c
Ik heb een library.c en library.h.
Ten slotte een defs.h
In defs wordt een structure type definieerd die alle functies nodig hebben.
Dus in functie1.h en functie2.h voeg ik deze in (de structure wordt als parameter meegegeven in alle functies).
library.h is de globale headerfile voor de gehele library, net zoals bijvoorbeeld mysql.h de globale headerfile is voor de gehele libmysql.
In library.h include ik uiteraard functie1.h en functie2.h, zodat deze functies bij het includen van library.h bekend worden.
Maar dat gaat fout: de structure is dubbel definieerd, nl. zowel in functie1.h als functie2.h.
Hoe los ik dat op?
Met preprocessor commando's werken?
(vast een domme vraag, maar ik kan het antwoord niet vinden in mijn boeken, aangezien daar geen uitgebreide library's behandeld worden die uit meerdere broncode bestanden bestaann)
Hierover heb ik een vraag. Vast een newbie vraag, maar met de search kwam ik niet ver.
Als ik een header file 2 keer gebruik dan krijg ik een melding over dubbele definities. Helaas kan ik dat niet altijd vermijden.
Voorbeeld:
Stel ik heb een functie1.h en een functie2.h, die definities bevatten voor functie1.c en functie2.c
Ik heb een library.c en library.h.
Ten slotte een defs.h
In defs wordt een structure type definieerd die alle functies nodig hebben.
Dus in functie1.h en functie2.h voeg ik deze in (de structure wordt als parameter meegegeven in alle functies).
library.h is de globale headerfile voor de gehele library, net zoals bijvoorbeeld mysql.h de globale headerfile is voor de gehele libmysql.
In library.h include ik uiteraard functie1.h en functie2.h, zodat deze functies bij het includen van library.h bekend worden.
Maar dat gaat fout: de structure is dubbel definieerd, nl. zowel in functie1.h als functie2.h.
Hoe los ik dat op?
Met preprocessor commando's werken?
(vast een domme vraag, maar ik kan het antwoord niet vinden in mijn boeken, aangezien daar geen uitgebreide library's behandeld worden die uit meerdere broncode bestanden bestaann)