t*s 发帖数: 1 | 1 【 以下文字转载自 Military 讨论区 】
发信人: tns (TNS), 信区: Military
标 题: Re: 是不是真的懂C? 看看这行code,
发信站: BBS 未名空间站 (Thu Jun 18 22:52:27 2020, 美东)
也出个小题:
int *pi = malloc(sizeof (int));
long *pl = NULL;
float *pf = malloc(sizeof (float));
double *pd = malloc(sizeof (double));
FREE_ALL(pi, pl, pf, pd);
实现一下FREE_ALL,等效于下面的效果:
free(pi);
free(pf);
free(pd);
pl只是为了表明这个宏能接受空指针为参数 | n******t 发帖数: 4406 | 2 用varadic macro就可以了。
但是實際操作裏面這樣並不推薦,因爲這個先後順序是很重要的,這麼寫非常容易出錯。
此外,free本來就可以take null。
【在 t*s 的大作中提到】 : 【 以下文字转载自 Military 讨论区 】 : 发信人: tns (TNS), 信区: Military : 标 题: Re: 是不是真的懂C? 看看这行code, : 发信站: BBS 未名空间站 (Thu Jun 18 22:52:27 2020, 美东) : 也出个小题: : int *pi = malloc(sizeof (int)); : long *pl = NULL; : float *pf = malloc(sizeof (float)); : double *pd = malloc(sizeof (double)); : FREE_ALL(pi, pl, pf, pd);
| t*s 发帖数: 1 | | n******t 发帖数: 4406 | 4 你要這東西的point是啥?寫起來很簡單,但是我認爲沒有場景能這麼寫。
【在 t*s 的大作中提到】 : 没人帖个code?
|
|