2011-09-23 12 views
9

होना चाहिए मुझे कुछ सी कोड संकलित करने में समस्या हो रही है।जीसीसी सी संकलन त्रुटि, शून्य मान को अनदेखा नहीं किया गया क्योंकि यह

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; 
} 

त्रुटि के इस प्रकार बायपास करने के लिए किसी भी तरह से:

player.c: In function ‘login’: 
player.c:54:17: error: void value not ignored as it ought to be 

यह त्रुटि के लिए कोड है: जब मैं संकलन, I'l इस त्रुटि मिलती है?
धन्यवाद

संपादित करें: सभी sp_ कार्यों libspotify

+3

दिखाएं 'sp_session_login की घोषणा()'

उदाहरण के लिए, वहाँ दो एक ही बात करने के लिए तरीके हैं। –

+0

आपके पास सी में परिभाषित बूल है? अच्छा अभ्यास नहीं है। – Cartesius00

+0

यदि आप 'क्लैंग' का उपयोग करते हैं, तो आपको भी बेहतर त्रुटि संदेश मिल सकते हैं। –

उत्तर

8

त्रुटि रेखा वास्तव में कहां है?

अधिक जानकारी के बिना

, मेरा अनुमान है कि यह यहाँ है:

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; 
} 
+2

पुष्टि की गई, 'sp_session_login' एक' शून्य 'फ़ंक्शन है: https://developer.spotify.com/docs/libspotify/11.1.60/group__session.html –

8

यह आमतौर पर आप कुछ करने के लिए एक शून्य समारोह की वापसी, निश्चित रूप से एक त्रुटि है जो आवंटित मतलब है से हैं।

आपके मामले में, मुझे लगता है कि sp_session_login फ़ंक्शन एक शून्य है, इसलिए त्रुटि है।

2

मुझे लगता है कि sp_session_login को void लौटने के रूप में घोषित किया गया है और sp_error नहीं है और यह निर्धारित करने का कोई वैकल्पिक तरीका है कि यह सफल हुआ है या नहीं।

2

ऐसा लगता है कि sp_session_login वास्तव में कुछ भी वापस नहीं करता है। विशेष रूप से, यह sp_error वापस नहीं करता है, इसलिए ऐसा कोई तरीका नहीं है जिससे यह काम कर सके। आप वास्तव में इसे बाईपास नहीं कर सकते हैं।

-1

आप घोषित करना चाहिए शून्य कार्यों से पहले उन्हें का उपयोग करें। उन्हें मुख्य कार्य से पहले या उनकी कॉल से पहले रखने की कोशिश करें। एक और कार्रवाई है जो आप कर सकते हैं: आप संकलक को बता सकते हैं कि आप शून्य कार्यों का उपयोग करेंगे।

#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

यह प्रश्न का उत्तर नहीं देता है। * सभी * कार्यों को उपयोग से पहले घोषित किया जाना चाहिए (सी 99 को इसकी आवश्यकता है, और यह सी 0 9 में अच्छा अभ्यास है)।ओपी ने पहले ही उचित हेडर को शामिल करके 'sp_session_login' घोषित किया है; इस तरह संकलक जानता है कि यह एक 'शून्य' समारोह है। समस्या यह है कि ओपी ने एक चर के लिए 'शून्य' फ़ंक्शन के असामान्य परिणाम को असाइन करने का प्रयास किया; आपका उत्तर वास्तविक समस्या का समाधान नहीं करता है। –

संबंधित मुद्दे