2011-09-23 15 views
9

Cコードのコンパイルに問題があります。 私はコンパイルすると、I'lはこのエラーを取得:GCC 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_機能は、それは通常、あなたはもちろん誤りである何か、にvoid関数の戻り値を割り当てることlibspotify

+3

')(' sp_session_loginの宣言すべて表示するexemploについては

、2つの同じことをする方法があります。 –

+0

boolはCで定義されていますか?良い練習ではありません。 – Cartesius00

+0

'clang'を使うと、より良いエラーメッセージが出るかもしれません。 –

答えて

8

エラーラインはどこですか?

さらに情報がなければ、私はそれがここにあります推測している:

sp_error err = sp_session_login(g_sess, username, password, remember_me); 

私はsp_session_loginがvoidを返していると思います。

てみてください。それらを使用する前に

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

'sp_session_login'は' void'関数です:https://developer.spotify.com/docs/libspotify/11.1.60/group__session.html –

8

からです。

あなたのケースでは、私はsp_session_login関数が無効なので、エラーと推測します。

2

sp_session_loginvoidではなくsp_errorではないと判断されていますが、それが成功したかどうかを判断する別の方法があります。

2

sp_session_loginは実際に何かを返すようには見えません。特に、sp_errorは返されないので、これがうまくいくわけではありません。あなたは本当にそれをバイパスすることはできません。

-1

あなたがvoidの関数を宣言する必要があります。メインファンクションの前またはコールの前に配置してください。 もう1つのアクションがあります: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); 
} 
+2

これは質問に答えません。 *すべての*関数は使用前に宣言する必要があります(C99はこれを必要とし、C90では良い方法です)。OPは、適切なヘッダーを '#include 'することによって既に' sp_session_login'を宣言しました。これは、コンパイラがそれが 'void '関数であることを知っている方法です。問題は、OPが 'void'関数の存在しない結果を変数に代入しようとしたことです。あなたの答えは実際の問題に対処していません。 –

関連する問題