看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
Re: 是不是真的懂C? 看看这行code, (转载)
查看未名空间今日新帖
最新回复:2020年6月20日 10点51分 PT
共 (7) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
t
tns
4 年多
楼主 (未名空间)
【 以下文字转载自 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
netghost
4 年多
2 楼
用varadic macro就可以了。
但是實際操作裏面這樣並不推薦,因爲這個先後順序是很重要的,這麼寫非常容易出錯。
此外,free本來就可以take null。
【 在 tns (TNS) 的大作中提到: 】
: 【 以下文字转载自 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
tns
4 年多
3 楼
没人帖个code?
n
netghost
4 年多
4 楼
你要這東西的point是啥?寫起來很簡單,但是我認爲沒有場景能這麼寫。
【 在 tns (TNS) 的大作中提到: 】
: 标 题: Re: 是不是真的懂C? 看看这行code, (转载)
: 发信站: BBS 未名空间站 (Fri Jun 19 21:45:38 2020, 美东)
:
: 没人帖个code?
: --
S
SuvTrucks
4 年多
5 楼
不一定是free, 任何接受一个指针的都可以。换成。DO_ALL free 换成do
【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 你要這東西的point是啥?寫起來很簡單,但是我認爲沒有場景能這麼寫。
n
netghost
4 年多
6 楼
這個就更沒譜了。操作和參數都隨便組合,絕對是bug的來源。
【 在 SuvTrucks (SUV&TRUCK) 的大作中提到: 】
: 不一定是free, 任何接受一个指针的都可以。换成。DO_ALL free 换成do
d
digua
4 年多
7 楼
这么简单,在实际中又没有意义的代码,能测出什么呢。
【 在 tns (TNS) 的大作中提到: 】
: 发信人: 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,等效于下面的效果:
: ...................
请输入帖子链接
收藏帖子
【 以下文字转载自 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只是为了表明这个宏能接受空指针为参数
用varadic macro就可以了。
但是實際操作裏面這樣並不推薦,因爲這個先後順序是很重要的,這麼寫非常容易出錯。
此外,free本來就可以take null。
【 在 tns (TNS) 的大作中提到: 】
: 【 以下文字转载自 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);
: ...................
没人帖个code?
你要這東西的point是啥?寫起來很簡單,但是我認爲沒有場景能這麼寫。
【 在 tns (TNS) 的大作中提到: 】
: 标 题: Re: 是不是真的懂C? 看看这行code, (转载)
: 发信站: BBS 未名空间站 (Fri Jun 19 21:45:38 2020, 美东)
:
: 没人帖个code?
: --
不一定是free, 任何接受一个指针的都可以。换成。DO_ALL free 换成do
【 在 netghost (Up to Isomorphism) 的大作中提到: 】
: 你要這東西的point是啥?寫起來很簡單,但是我認爲沒有場景能這麼寫。
這個就更沒譜了。操作和參數都隨便組合,絕對是bug的來源。
【 在 SuvTrucks (SUV&TRUCK) 的大作中提到: 】
: 不一定是free, 任何接受一个指针的都可以。换成。DO_ALL free 换成do
这么简单,在实际中又没有意义的代码,能测出什么呢。
【 在 tns (TNS) 的大作中提到: 】
: 发信人: 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,等效于下面的效果:
: ...................