警告:控件到达非 void 函数的末尾

Warning: control reaches end of non void function

我很确定我的 return 声明是正确的,所以我不知道为什么会这样显示。

/* 检查 table 完整功能 */

bool check_table_full (char board[][SIZE])
{
    int row, col;

    for (row = 0; row < SIZE; row++) {
    for (col = 0; col < SIZE; col++) {
        if (board[row][col] != '_') {
        return true;
        }
        else {
        return false;
        }
    }
    }
}

编译器往往无法理解对人类来说显而易见的东西。您需要在末尾使用默认 return 来说服编译器。或者重组函数,这样你就不会 return 在函数中间。

你可以试试这个,例如:

bool check_table_full (char board[][SIZE])
{
    int row, col;

    for (row = 0; row < SIZE; row++) {
        for (col = 0; col < SIZE; col++) {
            if (board[row][col] != '_') {
                return true;
            } else {
                return false;
            }
        }
    }
    return false; 
}

此代码有效:

bool check_table_full (char board[][SIZE])
{
    int row, col;

    for (row = 0; row < SIZE; row++) {
        for (col = 0; col < SIZE; col++) {
            if (board[row][col] != '_') {
                return true;
            }
        }
    }
    return false;
}