Artiklen viser en teknik til at skrive type-sikre generiske datastrukturer i C ved hjælp af unions for at gemme typeinformation.
Der gennemgås fire niveauer af generiske datastrukturer: makrobaserede headers, void*, inline storage med fleksible array-medlemmer og type-checking med unions og __typeof__.
Inline storage løser performance- og hukommelsesproblemer ved at kombinere node og data i én enkelt allocation.
Unionen med et payload-medlem leverer kompilertidstypeinformation uden runtime-overhead.
Makroer bruges til at caste funktionspekere, håndhæve korrekt type ved indsættelse og beregne datastørrelse automatisk.
Teknikken kan tilpasses ældre compilere uden __typeof__ ved at bruge payload-tilordning og typedefs til at undgå type-inkompatibilitet.
Metoden kan udvides til andre datastrukturer som hashmaps med flere tilknyttede typer.
Get notified when new stories are published for "🇩🇰 Hacker News Dansk"