Fetch the repository succeeded.
RT
do{}while(0)
在大型软件开发(Linux内核老trick了)比较常见,是一种防止宏错误展开的一种防御性写法。
而这里是另外一个:不通过goto实现跳转到后续语句 所在的地方。
do {
if(...)
break;
...
}while(0)
// 后续语句
@mxs65221447 建议下次提问题的时候贴上所在行哈,这样方便自己也方便别人
例如https://gitee.com/openharmony/startup_init_lite/blob/master/src/init_read_cfg.c#L37
这里do {}while(0)
,并非无意义,如果去掉,里面if的break咋办,用return?那岂不是每个分支都得在返回前关闭一下fd,即
fclose(fd);
fd = NULL;
这里的作用,其实和@Schips说的一样,与goto是一样的,只不过我们看到比较多的实现是通过goto来的, 这种用法也没有啥不妥的
Sign in to comment