आपको उस कोड को देखने की आवश्यकता है जहां DEBUG परिभाषित किया गया है या परिभाषित नहीं किया गया है, और तदनुसार अपना कोड लिखें। DEBUG के साथ, आप पाएंगे कि इसे या तो परिभाषित नहीं किया गया है, या 1 के मान के साथ परिभाषित किया गया है। तो #if
DEBUG या #ifdef
DEBUG काम करेगा।
#define
की है कि अपने नियंत्रण में हैं के लिए, मैं सुझाव है कि आप हमेशा उन्हें, या तो फिर आप मूल्य के लिए जाँच करने के लिए उपयोग कर सकते हैं #if
0 या 1. के एक मूल्य के साथ परिभाषित करते हैं, लेकिन आप भी उन्हें सीधे उपयोग कर सकते हैं सामान्य अगर कथन या अभिव्यक्ति में, जो आपके कोड को और अधिक पठनीय बना सकता है। और चूंकि इसे हमेशा परिभाषित किया जाता है, इसलिए आप उस स्थान पर जाने के लिए एक्सकोड में "जंप टू डेफिनिशन" का उपयोग कर सकते हैं जहां इसे परिभाषित किया गया है और जांचें कि यह कैसे और क्यों सेट है। यदि इसके बजाय आप या तो #define
या #define
मान नहीं हैं, और यह परिभाषित नहीं किया गया है, तो एक्सकोड को पता नहीं होगा कि आपके स्रोत कोड में यह परिभाषित नहीं है। यह आपको गलत वर्तनी के उपयोग की तलाश करने का मौका भी देता है। यदि "परिभाषा पर जाएं" काम नहीं करता है, तो आप जानते हैं कि आपने इसे गलत लिखा है।
BTW एक
#if
निर्देश के भीतर
, किसी भी मैक्रो परिभाषित नहीं है 0. ने ले ली है तो #if
डीबग काम करेंगे अगर डीबग परिभाषित किया गया है नहीं, या यदि डीबग 0 के रूप में परिभाषित किया गया है, और यह संकलन नहीं होगा अगर डीबग के रूप में परिभाषित किया गया है कुछ नहीं - जो आपको बताएगा कि क्या गलत है ताकि आप इसे ठीक कर सकें। उस बिंदु से, #if
का उपयोग तब तक बेहतर होता है जब तक यह संकलित नहीं होता है।
'ifdef' बस परीक्षण किया गया है कि प्रतीक परिभाषित किया गया है।'# if' प्रतीक के VALUE का परीक्षण करता है। इसलिए '#define FOO 0' कर देगा' #ifdef FOO' सच हो, लेकिन '#if FOO' गलत हो, क्योंकि यह 0' #if' कर रहा है। –
आप "रूट" परिभाषा खोजने के लिए और यह निर्धारित मूल्य एक 1/0 मूल्य या एक वर्तमान/अनुपस्थित एक हो करने का इरादा है करने का प्रयास करना चाहिए। उन्हें गलत प्राप्त करने से "अप्रत्याशित" परिणाम हो सकते हैं। –