2016-11-25 5 views
-3

내가 초보자 C에서 오전 ++의 끝에 도달 할 수 있으며, 나는 체스 게임을 만들기 위해 노력하고 내가 컴파일 할 때 :경고 : 컨트롤이 아닌 무효 기능 [-Wreturn 형]}

bool isValidMove(int inCol, int inRow, int outCol, int outRow, char board[8][8]) 
{ 
    if (board[inRow][inCol] == '-') 
     return false; 
    else 
    { 
     if((board[inRow][inCol] == 'R' || board[inRow][inCol] == 'r') && isValidMoveRook(inCol, inRow, outCol, outRow, board)) 
      return true; 
     if((board[inRow][inCol] == 'K' || board[inRow][inCol] == 'k') && isValidMoveKnight(inCol, inRow, outCol, outRow, board)) 
      return true; 
     if((board[inRow][inCol] == 'R' || board[inRow][inCol] == 'r') && isValidMoveRook(inCol, inRow, outCol, outRow, board)) 
      return true; 
    } 
} 

내가 얻을 내 컴파일러 에서이 경고는 warning: control may reach end of non-void function [-Wreturn-type] } 누구나 내가 Mac에서 오전이 문제를 도와 줄 수 있습니다.

+1

함수가 아무것도 반환하지 않을 수 있기 때문에 (은'else' 지점에서'if's 전혀 평가하지 않는 경우 'TRUE'는? 무엇을) – UnholySheep

답변

2

귀하의 조건에 부합하지 않는 한 최후에 아무것도 반환하지 않습니다.

bool isValidMove(int inCol, int inRow, int outCol, int outRow, char board[8][8]) { 
    if(board[inRow][inCol] == '-') { 
     return false; 
} 
else { 
    if((board[inRow][inCol] == 'R' || board[inRow][inCol] == 'r') && isValidMoveRook(inCol, inRow, outCol, outRow, board)) { 
    return true; 
     } 
     if((board[inRow][inCol] == 'K' || board[inRow][inCol] == 'k') && isValidMoveKnight(inCol, inRow, outCol, outRow, board)) { 
      return true; 
     } 
     if((board[inRow][inCol] == 'R' || board[inRow][inCol] == 'r')&&  isValidMoveRook(inCol, inRow, outCol, outRow, board)) { 
      return true; 
     } 
    } 
    // return something here 
} 
2

else 블록에는 아무 것도 반환되지 않는 경로가 있습니다. 그것이 당신이 경고 받고있는 것입니다.

+0

당신은 – Ian

+0

@UnholySheep 코멘트 이미이 어떤 경로를 말해 줄 수 귀하의 질문에. –

+0

if가 false를 반환하고 else가 true를 반환하기 때문에 나는 그것을 얻지 못합니다. – Ian