2010-10-21 13 views
5
static void llist_dtor(void *user, void *element) 
{ 
    (void)user; 
    (void)element; 
    /* Do nothing */ 
} 

क्या यह कोई ऑपरेशन फ़ंक्शन नहीं है? फिर कास्टिंग क्यों किया जाता है? क्या एनयूएलएल को इसके पैरामीटर में से एक के रूप में पास करना ठीक है?निम्नलिखित कोड क्या करते हैं?

उत्तर

4

हां, यह एक नो-ऑप फ़ंक्शन है।

कास्टिंग एक सामान्य चाल है जो संकलक को अप्रयुक्त पैरामीटर के बारे में शिकायत करने से रोकने के लिए एक आम चाल है।

14

यह वास्तव में एक नो-ऑप है। (void) पर कास्ट कुछ कंपाइलरों के साथ "पैरामीटर कभी भी इस्तेमाल नहीं किया गया" चेतावनियों से बचने के लिए यहां हैं (जानवरों को अनुकूलित किया गया है, लेकिन पैरामीटर अभी भी "प्रयुक्त" के रूप में माना जाता है)।

आप NULL पास कर सकते हैं क्योंकि पैरामीटर को किसी भी तरह से अनदेखा किया जाता है।

0

यह नो-ऑप नहीं है। जैसे कि आप उन दो तर्कों को अनदेखा करने के लिए कंपाइलर को बताते हैं।

3

हां, यह एक नो-ऑप फ़ंक्शन है और void जाली लाइनों को "अप्रयुक्त पैरामीटर" चेतावनी से बचने के लिए रखा गया है। जीसीसी के लिए, "अप्रयुक्त" के लिए खोज पेज में: http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

हालांकि, अगर यह सी थे C++ के बजाय, मैं शायद यह थोड़ा अलग तरह के रूप में

static void llist_dtor(void * /* user */, void * /* element */) 
{ 
    /* Do nothing */ 
} 

ध्यान दें कि चर नाम हैं लिखेंगे टिप्पणी की गई।

+1

-1, जीसीसी तर्क कोड के बिना सी कोड संकलित नहीं करेगा। (हालांकि सी ++ के लिए काम करता है)। –

+0

@ एंड्रयू मेडिको: +1: मुझे सुधारने के लिए धन्यवाद। ज्यादातर मैं सी ++ करता हूं और वहां मैंने कुछ बार किया है ... कभी नहीं सोचा कि यह सी में अलग हो सकता है। – Arun

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