GCC 7.3 - 4.2.3. Defined

4.2.3 परिभाषित




gcc

4.2.3 परिभाषित

defined विशेष ऑपरेटर का उपयोग ' #if ' और ' #elif ' अभिव्यक्तियों में यह देखने के लिए किया जाता है कि क्या एक निश्चित नाम को मैक्रो के रूप में परिभाषित किया गया है। defined name और defined ( name ) दोनों अभिव्यक्तियाँ हैं जिनका मूल्य 1 है यदि नाम को कार्यक्रम में वर्तमान बिंदु पर मैक्रो के रूप में परिभाषित किया गया है, और 0 अन्यथा। इस प्रकार, #if defined MACRO ठीक #ifdef MACRO बराबर है।

defined तब उपयोगी होता है जब आप एक बार में एक से अधिक मैक्रो का परीक्षण करना चाहते हैं। उदाहरण के लिए,

#if defined (__vax__) || defined (__ns16000__)

सफल होगा यदि या तो __vax__ या __ns16000__ नामों को मैक्रो के रूप में परिभाषित किया गया है।

इस तरह लिखे गए सशर्त:

#if defined BUFSIZE && BUFSIZE >= 1024

आमतौर पर सिर्फ #if BUFSIZE >= 1024 को सरल बनाया जा सकता है, क्योंकि अगर BUFSIZE को परिभाषित नहीं किया गया है, तो इसकी व्याख्या मूल्य शून्य के रूप में की जाएगी।

यदि defined ऑपरेटर मैक्रो विस्तार के परिणामस्वरूप दिखाई देता है, तो C मानक कहता है कि व्यवहार अपरिभाषित है। GNU cpp इसे एक वास्तविक defined ऑपरेटर के रूप में मानता है और सामान्य रूप से इसका मूल्यांकन करता है। यदि आप कमांड-लाइन विकल्प का उपयोग करते हैं तो यह आपके कोड को जहां भी इस सुविधा का उपयोग करता है, यह चेतावनी देगा, क्योंकि अन्य संकलक इसे अलग तरीके से संभाल सकते हैं। -Wextra द्वारा चेतावनी को भी सक्षम किया गया है , और व्यक्तिगत रूप से -Wexpansion-to-define के साथ भी सक्षम किया जा सकता है