警告「値を返さないコントロールパスがあります」について。

[戻る]
いくみ 2002/06/19(水) 14:48:53
16ビットコードから32ビットに移植した時に、
ここで「値を返さないコントロールパスがあります」という警告が出ました。
しかし、どのコードが戻り値を返してないのかよくわかりません。
どうしたら良いのか、教えていただけないでしょうか?

int dsv_MacFput01(char* pszInp,WORD wcnt)
{
    if (strncmp(pszInp,AP102,sizeof(AP102)-1) == 0) {
        sprintf(szCommBuff,"%s %s %lu",szSFile,szDFile,Stat.st_size);
        if ( dsv_FileSend(szCommBuff) == 0)    {
            RunTbl.macstatus=St_MacFput_Trans;
            return Proc_Process;
        }
        else {
            dsv_MacroReturn(CS200,RunTbl.connecttask);
            return Proc_End;
        }
    }
    else if (strstr(pszInp,"RERAY STATION")!=NULL)    {     
                /* #No.6 From */
#ifdef RS422
        if (iTemp==TRUE)    {
            sprintf(szCommBuff,"TEMPTR %s\r",szSFile);
            dsv_Exec(szCommBuff,strlen(szCommBuff),RESP_REQ);
            RunTbl.macstatus=St_MacFput_Temptr;
            return Proc_Process;
        }
        else    {
            sprintf(szCommBuff,"TEMPWR %s%
lu\r",szSFile,Stat.st_size);
            dsv_Exec(szCommBuff,strlen(szCommBuff),RESP_REQ);
            RunTbl.macstatus=St_MacFput_Tempwr;
            return Proc_Process;
        }        /* #No.6 To */
#endif
    }
    else {
        dsv_MacroReturn(pszInp,RunTbl.connecttask);
        return Proc_End;
    }   
}

sugar 2002/06/19(水) 14:55:02
RS422
これが定義されていない時の

    else if (strstr(pszInp,"RERAY STATION")!=NULL)    {     

のif節内ではないでしょうか。

[E-Mail] 2002/06/25(火) 15:26:27
えーと、提示されている関数の戻り値の型は int なわけですけど
関数の最後に return で値をかえしてないからじゃぁないですか?

PATIO 2002/06/26(水) 17:24:02
関数の最後ですね。
何事も無く最後まで処理が進んだ場合のreturnがありません。

不良PG [E-Mail] 2002/06/26(水) 18:39:01
>関数の最後ですね。
>何事も無く最後まで処理が進んだ場合のreturnがありません。
ifブロックの最後がelseだからそこは問題ないのでは・・

PATIO 2002/06/26(水) 19:32:50
いえ、RS422が定義されていないと最後まで行ってしまいますよ。

PATIO 2002/06/26(水) 19:34:56
ああ、
RS422のプリプロセッサで#elseを使ってreturn文を記述する方が正解なのかも。

古いスレッドには追加発言できません。