¿Cómo inicializar variable con atributo de limpieza?

¿Hay alguna manera de inicializar una variable con el atributo del comstackdor de cleanup ? ¿O tengo que establecer el valor después de declarar la variable?

He intentado poner el atributo de cleanup delante de = malloc(10); Como en el ejemplo de abajo y detrás = malloc(10); Pero ninguno comstack.

 #include  #include  static inline void cleanup_buf(char **buf) { if(*buf == NULL) { return; } printf("Cleaning up\n"); free(*buf); } #define auto_clean __attribute__((cleanup (cleanup_buf))); int main(void) { char *buf auto_clean = malloc(10); if(buf == NULL) { printf("malloc\n"); return -1; } return 0; } 

¿Existe una syntax diferente para usar la cleanup e inicializar la variable en una línea? ¿O tengo que establecer el valor después de declarar la variable como en el siguiente ejemplo?

 #include  #include  static inline void cleanup_buf(char **buf) { if(*buf == NULL) { return; } printf("Cleaning up\n"); free(*buf); } /* Use this attribute for variables that we want to automatically cleanup. */ #define auto_clean __attribute__((cleanup (cleanup_buf))); int main(void) { char *buf auto_clean; buf = malloc(10); if(buf == NULL) { printf("malloc\n"); return -1; } return 0; } 

Sólo mistypo. sólo…

 //#define auto_clean __attribute__((cleanup (cleanup_buf))); // ^ #define auto_clean __attribute__((cleanup (cleanup_buf)))