繁体   English   中英

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

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

我在编译一些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

它通常意味着你将void函数的返回赋值给某事,这当然是一个错误。

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

错误线在哪里?

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

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

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

它看起来不像sp_session_login实际返回任何东西。 特别是,它不会返回sp_error ,因此无法使用它。 你无法真正绕过它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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