GCC C编译错误,无法忽略void值,因为它应该是

时间:2011-09-23 21:08:08

标签: c gcc

我在编译某些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 signin\n");
        return 0;
    }
    return 1;
}

有什么方法可以绕过这种错误吗? 感谢

修改 所有sp_函数都来自libspotify

5 个答案:

答案 0 :(得分:8)

这通常意味着你将void函数的返回分配给某个东西,这当然是一个错误。

在你的情况下,我猜sp_session_login函数是空的,因此错误。

答案 1 :(得分:8)

错误行在哪里?

如果没有进一步的信息,我猜它就在这里:

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

看起来sp_session_login实际上没有返回任何东西。特别是,它不返回sp_error,所以这没办法。你无法真正绕过它。

答案 4 :(得分:-1)

在使用之前必须声明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);
}