GCC C编译错误,无法忽略void值,因为它应该是
我在编译一些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
错误线在哪里?
没有进一步的信息,我猜它在这里:
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; }
它通常意味着你将void函数的返回分配给某个东西,这当然是一个错误。
在你的情况下,我猜sp_session_login
函数是一个空的函数,因此错误。
我猜测sp_session_login
被声明为返回void
而不是sp_error
并且有一些替代方法可以确定它是否成功。
它看起来不像sp_session_login
实际返回任何东西。 特别是,它不会返回sp_error
,因此无法使用它。 你无法真正绕过它。
您必须在使用之前声明void函数。 尝试将它们放在主要function之前或之前。 您还可以执行一项操作:您可以告诉编译器您将使用void函数。
例如,有两种方法可以做同样的事情:
#include void showMsg(msg){ printf("%s", msg); } int main(){ showMsg("Learn c is easy!!!"); return 0; }
……而另一种方式:
#include 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); }