GCC C ошибка компиляции, пустое значение не игнорируется, как должно быть - PullRequest
9 голосов
/ 24 сентября 2011

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

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 signin\n");
        return 0;
    }
    return 1;
}

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

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

Ответы [ 5 ]

8 голосов
/ 24 сентября 2011

Где именно строка ошибки?

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

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;
}
8 голосов
/ 24 сентября 2011

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

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

2 голосов
/ 24 сентября 2011

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

2 голосов
/ 24 сентября 2011

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

0 голосов
/ 26 октября 2013

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

Например, есть два способа сделать одно и то же:

#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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...