Linux 5 でアプリケーションをコンパイルすると、次のエラーが発生します。
api_svc1.c:335: エラー: case ラベルが switch ステートメント内にありません api_svc1.c:340: エラー: 「default」 ラベルが switch ステートメント内にありません
c プログラム 'api_svc1.c' は、rpcgen によって生成されます。geberated コードに 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 でエラーなしで正常にコンパイルされました。これを解決する方法はありますか?