Ok, look at the macro parts along the line
#define RAII_VARIABLE(vartype,varname,initval,dtor) \
- , , . , , , , , - , , , , , . .
void _dtor_ ## varname (vartype * v) { dtor(*v); } \
. varname _dtor_ ( ## ). vartype .
(, ## , ), . :
vartype varname __attribute__((cleanup(_dtor_
, __attribute__() : vartype varname = (initvar). - __attribute__((cleanup(_dtor_ ## varname))). , , .
__attribute__() - , , , . , __attribute__((cleanup())). , . __attribute__(), #define __attribute__() , __attribute__() . , RAII. , __attribute__(), , .