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;
}
}
RS422
これが定義されていない時の
else if (strstr(pszInp,RERAY STATION)!=NULL) {
のif節内ではないでしょうか。
えーと、提示されている関数の戻り値の型は int なわけですけど
関数の最後に return で値をかえしてないからじゃぁないですか?
関数の最後ですね。
何事も無く最後まで処理が進んだ場合のreturnがありません。
>関数の最後ですね。
>何事も無く最後まで処理が進んだ場合のreturnがありません。
ifブロックの最後がelseだからそこは問題ないのでは・・
いえ、RS422が定義されていないと最後まで行ってしまいますよ。
ああ、
RS422のプリプロセッサで#elseを使ってreturn文を記述する方が正解なのかも。