linux中的switch语句错误中没有大小写标签
在Linux5中编译应用程序时,Iget出现以下错误 api_svc1.c:335:错误:案例标签不在switch语句中 api_svc1.c:340:错误:switch语句中没有–default–标签 c程序“api_svc1.c”由rpcgen生成。在指定的代码中找不到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(
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语句。但它还是被编译了。但这是编译器生成的代码。因此,不可能手动修改代码以添加开关箱。还有其他解决办法吗?