在C中-一次“多次”向函数返回值

时间:2018-08-09 09:43:37

标签: c return-value

问题是,如何在相同的“ 大小写”中多次向函数返回值?

fork()调用将使每个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);

重要的要求是,由于接收到的帧数较大,因此必须在“ 情况”内完成此操作,因为“存储”数据并“返回”以取回该数据不是一种选择。

到目前为止,从长远来看,一种应用的解决方案会导致资源的大量使用。试图杀死子进程会导致僵尸,从长远来看,它们也会在资源上产生躲避行为。

提前感谢任何想法!

1 个答案:

答案 0 :(得分:2)

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

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

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