Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux中的switch语句错误中没有大小写标签_Linux_Switch Statement_Rpc - Fatal编程技术网

linux中的switch语句错误中没有大小写标签

linux中的switch语句错误中没有大小写标签,linux,switch-statement,rpc,Linux,Switch Statement,Rpc,在Linux5中编译应用程序时,Iget出现以下错误 api_svc1.c:335:错误:案例标签不在switch语句中 api_svc1.c:340:错误:switch语句中没有–default–标签 c程序“api_svc1.c”由rpcgen生成。在指定的代码中找不到Switch语句 代码片段如下所示: result = (*local)((char *)&argument, rqstp); if (result != NULL && !svc_sendreply(

在Linux5中编译应用程序时,Iget出现以下错误

api_svc1.c:335:错误:案例标签不在switch语句中 api_svc1.c:340:错误:switch语句中没有–default–标签

c程序“api_svc1.c”由rpcgen生成。在指定的代码中找不到Switch语句

代码片段如下所示:

result = (*local)((char *)&argument, rqstp);
if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) {
        svcerr_systemerr (transp);
       _exit (-1);
     }
     _exit (0);
   case -1:
    /*
     * Error - fork couldn't create the child process, return
     */
     svcerr_systemerr(transp);
   default:
     /*
      * Parent process, clean up any zombie children and
      * return to svc_run()
      */
      svc_destroy(transp);
      while (waitpid(-1,NULL,WNOHANG) > 0);
      _rpcsvccount--;
      _rpcsvcstate = _SERVED;
      return;
在Solaris中成功生成并编译了相同的代码,没有出现错误。
知道如何解决这个问题吗?

由于错误状态,您的案例/默认值不在开关块内。一个编译器接受这一点并不意味着另一个编译器会接受。您需要显示整个函数。乍一看,编译器看起来是正确的-case-1:和default:如果没有一个封闭开关就没有意义。此代码可能无法访问,但编译器仍需要拒绝语法错误的代码。我怀疑您的意思是,您的SunRPC代码在Solaris上生成并构建得很好,而不是Solaris rpcgen在Linux上生成了与rpcgen相同的C代码,而是在Solaris上编译的。嗨,Kaz,solaris rpcgen生成的代码也不包含switch语句。但它还是被编译了。但这是编译器生成的代码。因此,不可能手动修改代码以添加开关箱。还有其他解决办法吗?