Er zijn verschillende manieren om generieke datastructuren in C te implementeren, van macro-headers tot void-pointers en flexible array members.
Met inline opslag via flexible array members kan data zonder extra pointer en allocatie in dezelfde geheugenblok worden geplaatst.
Door een union met een lege payload te gebruiken, kan de compiler via __typeof__() het elementtype van de lijst afleiden en typefouten bij compilatie afdwingen.
De list_prepend-macro cast een interne functie naar het juiste parametertype en verzorgt automatisch het doorgeven van de elementgrootte.
Voor oudere compilers zonder __typeof__() kan een vergelijkbare typecheck worden gerealiseerd met een struct en tijdelijke toewijzing naar de payload.
Door een typedef te gebruiken voor List(type) wordt het mogelijk om identieke generieke typen te kopiëren en als parameter mee te geven zonder compilerfouten.
Get notified when new stories are published for "🇳🇱 Hacker News Dutch"