GCC-C kompilieren Fehler, void-Wert nicht ignoriert wie es sein sollte
Ich habe Probleme beim kompilieren von C-code.
Wenn ich kompilieren, I ' L diese Fehlermeldung erhalten:
player.c: In function ‘login’:
player.c:54:17: error: void value not ignored as it ought to be
Dies ist der code für den Fehler:
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;
}
Irgendeiner Weise zu umgehen, diese Art von Fehler?
Dank
Edit:
Alle sp_ Funktionen sind von libspotify
- Zeigen die Erklärung von
sp_session_login()
. - Sie haben bool definiert, die in C? Keine gute Praxis.
- Wenn Sie
clang
, erhalten Sie möglicherweise bessere Fehlermeldungen, auch. - Vielleicht könnten Sie fügen Sie einige Informationen, wie die genaue Zeile, die den Fehler auslöst, und auch die definition der Typdefinition (oder Klasse)
sp_error
und diesp_session_login
Funktion Prototyp. Schließlich, wo sindg_sess
undremember_me
aus? - Eine login-Funktion, die keine Fehler zurück, das ist komisch. Sehr gut, sehr verständlich Fehler.
- bool ist nur in Ordnung, in C99 wenn Sie include <stdbool.h>.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wo ist die Fehler Zeile genau?
Ohne weitere Informationen, ich vermute, es ist hier:
Ich denke, sp_session_login ist wieder die leere.
Versuchen:
sp_session_login
ist einvoid
Funktion: developer.spotify.com/docs/libspotify/11.1.60/...Es bedeutet in der Regel weisen Sie auf die Rückkehr einer void-Funktion, um etwas, das ist natürlich ein Fehler.
In Ihrem Fall, ich denke, das
sp_session_login
Funktion ist ein void ein, daher der Fehler.Ich werde zu erraten, dass
sp_session_login
ist deklariert als eine Rückkehrvoid
und nichtsp_error
und es ist eine alternative Möglichkeit zu ermitteln, ob es gelungen ist.Sieht es nicht aus,
sp_session_login
eigentlich gibt alles. Insbesondere spielt es keine Rückkehr einensp_error
, also es gibt keine Möglichkeit, dies könnte funktionieren. Sie können nicht wirklich umgehen.Müssen Sie deklarieren void-Funktionen, bevor Sie Sie verwenden. Versuchen Sie, um Sie vor der main-Funktion oder vor Ihrer Anrufe.
Es gibt eine weitere Aktion, die Sie tun können: Sie können dem compiler, dass Sie verwenden, void-Funktionen.
Für exemplo, gibt es zwei Möglichkeiten, um die gleiche Sache:
...und in die andere Richtung:
sp_session_login
durch#include
ing die entsprechenden header; das ist, wie der compiler weiß, dass Sie einevoid
Funktion. Das problem ist, dass das OP versucht zu vergeben die nicht vorhandene Ergebnis einervoid
Funktion einer Variablen; Ihre Antwort nicht das eigentliche problem.