Ошибка компиляции GCC C, значение void не игнорируется, как должно быть

у меня возникли проблемы с компиляцией некоторого кода C. Когда я компилирую, я получаю эту ошибку:

player.c: In function ‘login’:  
player.c:54:17: error: void value not ignored as it ought to be

это код ошибки:

static bool login(const char *username, const char *password) {
    sp_error err = sp_session_login(g_sess, username, password, remember_me);
    printf("Signing in...n");
    if (SP_ERROR_OK != err) {
        printf("Could not signinn");
        return 0;
    }
    return 1;
}

любой способ обойти такую ошибку?
Спасибо

Edit: Все функции sp_ от libspotify

5 ответов


где именно находится строка ошибки?

без дополнительной информации, я предполагаю, что здесь:

sp_error err = sp_session_login(g_sess, username, password, remember_me);

Я думаю, sp_session_login возвращает пустоту.

попробуй:

static bool login(const char *username, const char *password) {
    sp_session_login(g_sess, username, password, remember_me);
    printf("Signing in...\n");
    return 1;
}

обычно это означает, что вы назначаете возврат функции void чему-то, что, конечно, является ошибкой.

в вашем случае, я думаю sp_session_login функция является пустой, следовательно, ошибка.


Я думаю, что sp_session_login объявляется как returning void, а не sp_error и есть какой-то альтернативный способ определить, удалось ли это.


похоже sp_session_login на самом деле ничего не возвращает. В частности, он не возвращает sp_error, Так что это не может работать. Вы не можете его обойти.


вы должны объявить функции void перед их использованием. Попробуйте поставить их перед основной функцией или перед их вызовами. Есть еще одно действие, которое вы можете сделать: вы можете сказать компилятору, что будете использовать функции void.

для exemplo есть два способа сделать то же самое:

#include <stdio.h>

void showMsg(msg){
    printf("%s", msg);
}

int main(){
    showMsg("Learn c is easy!!!");
    return 0;
}

...и наоборот:

#include <stdio.h>

void showMsg(msg); //Here, you told the compiller that you will use the void function showMsg.

int main(){
    showMsg("Learn c is easy!!!");
    return 0;
}

void showMsg(msg){
    printf("%s", msg);
}