Ik heb een structuur waarin een MYSQL *mysql is opgenomen.
Deze structuur definieer ik in een headerfile, die bij een library hoort die ik maak.
Om er voor te zorgen dat het type MYSQL bekend is, heb ik een #include <mysql.h> opgenomen. Als ik echter een ander programma maak dat mijn header file gebruikt, dan krijg ik gezeur dat mysql.h niet gevonden wordt: ik moet dan - naast de vindplaats van mijn headerfile - ook de vindplaats van de mysql headers opgeven.
Dit wil ik niet, te veel gedonder. Ik maak juist een eigen library om het client gebruik van één bepaalde database heel simpel te maken.
Daarom heb ik MYSQL *mysql veranderd in void *mysql.
Dit werkt ook, maar zijn er situaties waarin een void *mysql minder geschikt is als een MYSQL *mysql?
Oftewel algemeen gezegd: is een void pointer in plaats van een getypeerde pointer in bepaalde gevallen af te raden, behalve dan natuurlijk wegens de leesbaarheid van je code.
Deze structuur definieer ik in een headerfile, die bij een library hoort die ik maak.
Om er voor te zorgen dat het type MYSQL bekend is, heb ik een #include <mysql.h> opgenomen. Als ik echter een ander programma maak dat mijn header file gebruikt, dan krijg ik gezeur dat mysql.h niet gevonden wordt: ik moet dan - naast de vindplaats van mijn headerfile - ook de vindplaats van de mysql headers opgeven.
Dit wil ik niet, te veel gedonder. Ik maak juist een eigen library om het client gebruik van één bepaalde database heel simpel te maken.
Daarom heb ik MYSQL *mysql veranderd in void *mysql.
Dit werkt ook, maar zijn er situaties waarin een void *mysql minder geschikt is als een MYSQL *mysql?
Oftewel algemeen gezegd: is een void pointer in plaats van een getypeerde pointer in bepaalde gevallen af te raden, behalve dan natuurlijk wegens de leesbaarheid van je code.