C "void значение не игнорируется, как должно быть" ошибка в функции, которая возвращает int - PullRequest
0 голосов
/ 26 сентября 2018

У меня следующий код, и я получаю

"ошибку: пустое значение не игнорируется, так как оно должно быть

int ab = findActiveBlock ();"

Iпонял бы эту ошибку, если findActiveBlock был установлен в void, но он возвращает int?Пожалуйста, помогите

void updateActiveBlock() {

    int ab = findActiveBlock();
    //code using ab//
}

int findActiveBlock() {
    for (int i = 0; i < BLOCKCOUNT; i++) {
        if(blocks[i].active) {
            return i;
        }
    }
    return 1;
}

дополнительная информация: это C, "blocks []" - это массив структур.

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Я бы сделал дикое предположение, что ваш findActiveBlock на самом деле предварительно объявлен где-то выше как void -возвратная функция.Вы просто забыли обновить это объявление, чтобы оно соответствовало определению.

PS В качестве дополнительного примечания: () списки параметров являются устаревшей функцией в C. Для функций, которые не имеют параметров, предпочтительнее использовать (void) в своих декларациях.

0 голосов
/ 26 сентября 2018

Просто удар в темноте, но является ли * .active функцией?Если это так, то нужны скобки.

 int findActiveBlock() {
    for (int i = 0; i < BLOCKCOUNT; i++) {
        if(blocks[i].active()) {   //added parentheses to active
            return i;
        }
    }
    return 1;
}
...