C语言宏定义小问题,求带

img


宏定义不是等价替换吗,那这里为什么要用sz变量呢?他的意义是什么

只看这两行的话,猜测主要是为了兼容。也就是说,uthash_free这个还有一个函数是两个参数的,如果没这个函数,这里也可以用这个宏来代替,sz这个参数就不会用到。如果有这个函数时,就可以直接用,代码就不用修改。

这只是一个标识符,等价替代是你写
int * a,b=10;
a = (int *)malloc(sizeof(int) * b);
uthash_free(a,b);
这样a就是ptr,b就是sz
就这个宏来说,后面没有使用sz,所以不加sz是一样的