我在编译某些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
答案 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);
}