L'autore descrive una tecnica innovativa per creare strutture dati generiche type-safe in C usando union per associare informazioni di tipo a compile-time senza overhead di memoria.
Vengono illustrate quattro strategie progressive: generici basati su macro e header inclusi ripetutamente, uso di void *, memorizzazione inline con flexible array member e type checking tramite union e __typeof__.
Nel livello 3 viene usata una union con un membro payload parametrizzato per ottenere informazioni di tipo a compile-time e una macro list_prepend che castando la funzione interna fa scattare errori di tipo se si inserisce un valore incompatibile.
Si spiega come adattare la tecnica a compilatori privi di estensione __typeof__ usando un struct e un controllo di tipo via assegnazione all’interno della macro.
Viene mostrato come un typedef di List(Tipo) risolve i problemi di assegnazione e passaggio di variabili generiche identiche definite con macro separate.
La metodologia è applicabile a qualsiasi struttura dati generica, incluse mappe hash con tipizzazione per chiave e valore.
L’implementazione mantiene runtime efficiente evitando doppi malloc e cache miss grazie all’allocazione inline dei dati.
Get notified when new stories are published for "🇮🇹 Hacker News Italiano"