簡體   English   中英

GCC C編譯錯誤,無法忽略void值,因為它應該是

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM