निम्नलिखित समारोहसी में एक कास्ट पैरामीटर कथन क्या है?
int f (some_struct* p)
{
(void) p;
/* something else */
return 0;
}
में बयान
(void) p;
क्या मतलब है?
निम्नलिखित समारोहसी में एक कास्ट पैरामीटर कथन क्या है?
int f (some_struct* p)
{
(void) p;
/* something else */
return 0;
}
में बयान
(void) p;
क्या मतलब है?
कथन रनटाइम पर कुछ भी नहीं करता है, और परिणामस्वरूप कोई मशीन कोड नहीं होता है।
यह एक कंपाइलर चेतावनी को दबाता है कि p
फ़ंक्शन के शरीर में उपयोग नहीं किया जाता है। यह जीसीसी, क्लैंग और विजुअल सी ++ समेत विभिन्न कंपाइलरों में इस चेतावनी को दबाने के लिए एक पोर्टेबल और सुरक्षित तरीका है।
"void
करने के लिए कास्ट" एक सी भाषा मुहावरा है कि, प्रथा के अनुसार, अप्रयुक्त चर के बारे में दबा देता संकलक और lint
चेतावनी या मान है।
इस मामले में, डाइट्रिच एपीपी सही ढंग से बताता है, यह संकलक को बताता है कि आप जानते हैं कि आप p
तर्क का उपयोग नहीं कर रहे हैं, और इसके बारे में आपको "अप्रयुक्त तर्क" चेतावनी देने के लिए नहीं।
इस मुहावरे के अन्य उपयोग, void
करने के लिए एक समारोह का वापसी मान कास्टिंग, lint
कह के पारंपरिक तरीके से या, और अधिक महत्वपूर्ण बात, अन्य प्रोग्रामर है कि आप एक सचेत निर्णय लिया था वापसी मान की जाँच के परेशान करने के लिए नहीं है एक समारोह के। उदाहरण के लिए:
(void)printf("foo")
मतलब होगा "मुझे पता है printf()
एक मान देता है, और मैं वास्तव में यह जाँच करनी चाहिए, लेकिन मैं नहीं परेशान करने के लिए तय कर लिया है"।
इसका उपयोग अप्रयुक्त फ़ंक्शन पैरामीटर की चेतावनी से बचने के लिए किया जाता है। यह बस त्याग दिया जाता है, कुछ भी नहीं करता है कि अभिव्यक्ति का दुष्प्रभाव है।
C11 §6.3.2.2 शून्य
(अस्तित्वहीन) एक शून्य अभिव्यक्ति (एक अभिव्यक्ति शून्य टाइप है) का मूल्य किसी भी तरह से उपयोग नहीं किया किया जाएगा, और अस्पष्ट या स्पष्ट रूपांतरण (शून्य को छोड़कर) ऐसी अभिव्यक्ति पर लागू नहीं होगा। यदि किसी अन्य प्रकार की अभिव्यक्ति का मूल्यांकन शून्य अभिव्यक्ति के रूप में किया जाता है, तो इसका मान या डिज़ाइनर त्याग दिया जाता है। (। एक शून्य अभिव्यक्ति अपने साइड इफेक्ट के लिए मूल्यांकन किया जाता है)
एक और तरीका है अप्रयुक्त समारोह पैरामीटर की चेतावनी से बचने के लिए है:
p = p;
void
संकलक या रेशा चेतावनी देना नहीं है बताता है । यदि एक चर का उपयोग कभी नहीं किया जाता है, तो संकलक या लिंट सुझाव देंगे कि आप इसे हटा दें।
यदि आप इसे हटाना नहीं चाहते हैं, तो आप शून्य का उपयोग कर सकते हैं। लिंक की तरह: How can I hide "defined but not used" warnings in GCC?
क्या इसका मतलब है "शून्य" केवल एक ही प्रकार रखा जा सकता है? – user693986
यदि आप वहां एक अलग प्रकार डालते हैं, तो कुछ कंपाइलर्स "प्रभाव के साथ कथन" चेतावनी उत्पन्न करेंगे।यदि आप वहां 'शून्य' डालते हैं, तो आप कंपाइलर और इंसानों को उस कोड को पढ़ने के लिए संचार कर रहे हैं जो आपको पता है कि कथन का कोई प्रभाव नहीं है, और आप इसके साथ ठीक हैं। इसके अलावा, सी में किसी भी प्रकार को 'शून्य' में डाला जा सकता है (सी ++ में, कहानी अलग है)। –