gpt4 book ai didi

c - 错误 : fallthrough inside functions

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:52 26 4
gpt4 key购买 nike

过去几天我一直在学习 c(还是初学者),我看到了一些代码,例如:

int func()
{
code..
return 0;
error:
return 1;
}

我试图弄清楚 error: 部分做了什么,谷歌搜索了一段时间后我什么也没发现(我不确定它叫什么,我认为它是 fallthrought 就像在开关语句)。我写了这个简单的代码来看看它做了什么:

int n;
char input[100];
int main()
{
printf("Type a number: ");
fgets(input, sizeof(input), stdin);
sscanf(input, "%d", &n);
printf("%d", 1/n); // Invoked error by inputing 0

return 0;

error:
printf("error busted");
return 1;
}

当我运行它并输入 0 时,我得到了一个浮点异常,但是 error: 部分什么也没做,那么它究竟是如何工作的呢?

最佳答案

error: 会被 goto error; 使用,但您的示例中没有类似的内容。

这是 Linux 内核 (namespace.c) 的一个片段:

static struct vfsmount *fs_set_subtype(struct vfsmount *mnt, const char *fstype)
{
int err;
const char *subtype = strchr(fstype, '.');
if (subtype) {
subtype++;
err = -EINVAL;
if (!subtype[0])
goto err;
} else
subtype = "";

mnt->mnt_sb->s_subtype = kstrdup(subtype, GFP_KERNEL);
err = -ENOMEM;
if (!mnt->mnt_sb->s_subtype)
goto err;
return mnt;

err:
mntput(mnt);
return ERR_PTR(err);
}

使用goto容易出错,不鼓励,不适合初学者。

关于c - 错误 : fallthrough inside functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com