C RAII

Da Andreabont's Wiki.

I compilatori più famosi, come GCC e LLVM, supportano degli attributi per introdurre nel C la filosofia RAII.

Cleanup

L'attributo cleanup permette di settare una callback su una variabile, che verrà chiamata all'uscita dello scope della variabile stessa.

#include <stdio.h>

void mycleaner(int * variabile) {
    printf("La variabile %p (%d) è uscita dallo scope.\n", variabile, *variabile);
}

int main(void) {
    printf("Apro scope\n");
    {
        int miavariabile __attribute__((cleanup (mycleaner)));
        miavariabile = 42;
    }
    printf("Chiudo scope\n");
    return 0;
}