[英]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.