L’article propose une technique pour créer des structures de données génériques type-safe en C en utilisant une union pour associer l’information de type à la compilation.
Il compare quatre niveaux d’implémentation de généricité en C : inclusion de headers via macros, usage de void*, stockage inline avec flexible array member et validation de type avec union et __typeof__.
La macro list_prepend() illustre l’approche pour une liste chaînée générique, assurant la correspondance des types à la compilation sans surcharge mémoire.
L’approche inline résout les problèmes d’allocations multiples et de cache misses inhérents à la technique void*.
Il propose des adaptations pour anciens compilateurs (sans __typeof__) et l’utilisation de typedef pour uniformiser les types lors du passage en paramètre.
La méthode est extensible à d’autres structures de données, comme les tables de hachage à clés et valeurs de types distincts.
Get notified when new stories are published for "🇫🇷 Hacker News Français"