#define M(T) _Generic((T),int:12); typedef struct ast_range {int i;} ast_range; typedef struct ast_if ast_if; typedef struct ast_value ast_value; typedef struct ast_expr ast_expr; typedef struct ast_root ast_root; typedef struct ast_expr_cmp ast_expr_cmp; typedef struct ast_expr_bitwise ast_expr_bitwise; #define ALLOC_MEMSET(T,VAL) {VAL=malloc(sizeof(T));memset(VAL,0,sizeof(T));} int fun() { char *root; ALLOC_MEMSET(ast_range,root); }