GCC C编译错误,无效值未按应忽略
我在编译一些C代码时遇到问题。 当我编译时,我会得到以下错误:GCC C编译错误,无效值未按应忽略,c,gcc,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, user
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_uu函数都来自libspotify它通常意味着您将void函数的返回赋值给某个对象,这当然是一个错误
在您的情况下,我猜sp_session_login函数是无效的,因此出现了错误。我猜
sp_session_login
被声明为返回void
,而不是sp_error
,并且有其他方法确定它是否成功。它看起来实际上并没有返回任何东西。特别是,它不会返回sp_错误
,因此这是不可能的。你不能真的绕过它。错误行到底在哪里
没有进一步的信息,我猜是在这里:
sp_error err = sp_session_login(g_sess, username, password, remember_me);
我猜sp_会话_登录将返回无效
尝试:
必须先声明void函数,然后才能使用它们。尝试将它们放在主函数或调用之前。 您还可以做一件事:告诉编译器您将使用void函数 对于Examplo,有两种方法可以制作相同的东西:
#include <stdio.h>
void showMsg(msg){
printf("%s", msg);
}
int main(){
showMsg("Learn c is easy!!!");
return 0;
}
#包括
void showMsg(msg){
printf(“%s”,msg);
}
int main(){
showMsg(“学习c很容易!!!”;
返回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);
}
#包括
void showMsg(msg)//在这里,您告诉编译器您将使用void函数showMsg。
int main(){
showMsg(“学习c很容易!!!”;
返回0;
}
void showMsg(msg){
printf(“%s”,msg);
}
显示sp\u session\u login()的声明。
您在C中定义了bool吗?不是很好的做法。如果你使用clang
,你可能也会收到更好的错误消息。一个没有错误返回的登录函数,这很奇怪。嗯,这是一个可以理解的错误。@James:bool在C99中也可以,如果你包括在内。确认,sp\u session\u login
是一个void
函数:这并不能回答问题。所有函数都应该在使用前声明(C99需要声明,这是C90的良好实践)。OP已通过声明sp_session_login
;包括插入适当的标题;编译器就是这样知道它是一个void
函数的。问题是OP试图将void
函数的不存在结果分配给变量;你的回答没有解决实际问题。
#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);
}