简体   繁体   中英

GCC C compile error, void value not ignored as it ought to be

I'm having trouble compiling some C code. When I compile, I'l get this error:

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

This is the code for the error:

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;
}

Any way to bypass this kind of error?
Thanks

Edit: All sp_ functions are from libspotify

It usually means you assign the return of a void function to something, which is of course an error.

In your case, I guess the sp_session_login function is a void one, hence the error.

Where is the error line exactly?

Without further information, I'm guessing it's here:

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

I guess sp_session_login is returning the void.

Try:

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

我猜测sp_session_login被声明为返回void而不是sp_error并且有一些替代方法来确定它是否成功。

It doesn't look like sp_session_login actually returns anything. In particular, it doesn't return an sp_error , so there's no way this could work. You can't really bypass it.

You must declare void functions before use them. Try to put them before the main function or before their calls. There's one more action you can do: You can tell the compiler that you will use void functions.

For exemplo, there are two ways to make the same thing:

#include <stdio.h>

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

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

...and the other way:

#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);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM