And*_*anu 0 c macros c-preprocessor
是否可以编写一个具有类型和值作为其输入参数 ( MACRO(type,value)) 的宏,并返回一个指向保存所提交的value.
该宏的执行方式应类似于以下函数,但采用更通用的方式:
int *val_to_ptr(int val){
int *r = NULL;
r = nm_malloc(sizeof(*r));
*r = val;
return r;
}
Run Code Online (Sandbox Code Playgroud)
nm_malloc()故障安全 malloc 在哪里?宏的用法应该与此用法兼容:
printf("%d",*MACRO(int,5));
Run Code Online (Sandbox Code Playgroud)
有可能实现吗?
如果您使用 gcc,则可以使用语句表达式:
#define MACRO(type,value) ({ type* t = nm_malloc(sizeof(*t)); *t = (value); t; })
Run Code Online (Sandbox Code Playgroud)