C'è un modo per inizializzare una variabile con l'attributo del compilatore cleanup
? o devo impostare il valore dopo aver dichiarato la variabile?Come inizializzare la variabile con l'attributo cleanup?
Ho provato a inserire l'attributo cleanup
davanti a = malloc(10);
come nell'esempio seguente e dietro = malloc(10);
ma non compila.
#include <stdio.h>
#include <stdlib.h>
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;
}
C'è una sintassi diversa per l'utilizzo di cleanup
e inizializzare la variabile su una linea? O devo impostare il valore dopo aver dichiarato la variabile come nell'esempio qui sotto?
#include <stdio.h>
#include <stdlib.h>
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;
}