gpt4 book ai didi

c - 在 C 中 - 将值多次返回给函数 "at once"

转载 作者:行者123 更新时间:2023-11-30 20:09:29 26 4
gpt4 key购买 nike

问题是,如何在同一个“case”内多次向函数返回值?

fork() call 会导致每个 return 语句执行一次,包含 case 的父函数如何执行?返回?

这个想法看起来像这样:

  case 15:
if((bufLen == 15) && ((buf[0] & 0x80) == 128)) {
int rx = buf[5];
int tx = buf[6];
pid_t demux = fork (2);
if (demux == 0) {
(*arity)++;
return append_int(outBuf, outLen, outSz, "RX", rx)
}
if (demux > 0) {
(*arity)++;
return append_int(outBuf, outLen, outSz, "TX", tx);
}
}
break; // case 15

其中目标函数具有以下参数形式:

append_int(char *buf, int off, int bufsz, char *key, int val);

重要的要求是,它必须在“情况”内完成,因为“存储”数据和“返回”来检索数据由于接收帧的数量而无法选择。

到目前为止,应用的解决方案从长远来看会导致资源的高利用率。试图杀死子进程会导致僵尸进程,从长远来看,这也会产生对资源的狡猾行为。

预先感谢您的任何想法!

最佳答案

在 C 中,每个函数只能返回一次。第一个 return 语句之后的任何代码将永远不会运行。如果您希望一个函数有多个输出,您有两个选择:

1) 通过作为参数传递给函数的指针或引用提供输出值。

2) 具有结构体返回类型,并在函数执行时填充该结构体的值,然后在函数执行路径末尾返回填充的结构体。

关于c - 在 C 中 - 将值多次返回给函数 "at once",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51763730/

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