2012-10-17 15 views
14

लिनक्स कर्नेल देखते हुए मैं लाइन देखा। मैंने पहले कभी इस्तेमाल नहीं किया __maybe_unused देखा है। क्या यह लिनक्स कर्नेल के लिए विशिष्ट है? या यह सी spec में परिभाषित किया गया है? और यह वास्तव में क्या करता है?"__maybe_unused" क्या है?</p> <pre><code>static void *malloc(size_t size) __maybe_unused; </code></pre> <p>लिनक्स v3.2 /arch/frv/kernel/gdb_stub.c में:

उत्तर

17

include/linux/compiler-gcc.h में __maybe_unused मैक्रो की परिभाषा है:

#define __maybe_unused __attribute__((unused)) 

और gcc के मैनुअल में आप कार्यों के लिए unused विशेषता का दस्तावेज:

अप्रयुक्त "यह लक्षण किसी फ़ंक्शन से जुड़ा हुआ, इसका मतलब है कि फ़ंक्शन संभवतः अप्रयुक्त होने का मतलब है। जीसीसी इस फ़ंक्शन के लिए चेतावनी नहीं देगा। "

http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

और चर के लिए:

अप्रयुक्त "यह लक्षण एक चर से जुड़ी है, जिसका अर्थ है कि चर संभवतः अप्रयुक्त करने के लिए है जीसीसी इस के लिए एक चेतावनी का उत्पादन नहीं होगा। चर। "

http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html

9

commit that introduced the attribute:

__maybe_unused से अगर यह संभवतः पूर्वप्रक्रमक मैक्रो की मूल्यांकन की वजह से unreferenced हो सकता है दोनों समारोह और चर उपयोग के लिए __attribute __ ((अप्रयुक्त)) होने के लिए परिभाषित किया गया है। फ़ंक्शन प्रोटोटाइप को को __maybe_unused के साथ चिह्नित किया जाएगा यदि फ़ंक्शन की वास्तविक परिभाषा प्रीप्रोसेसर मैक्रोज़ पर पर निर्भर है।

+0

प्रतिबद्ध करने के लिए लिंक के लिए धन्यवाद। – Ivan