2011-12-23 14 views
35

मैंने उसी सी स्रोत फ़ाइल में #ifndef ABC और #if !defined (ABC) देखा है।सी में "ifndef" और "if! परिभाषित" के बीच अंतर?

क्या उनके बीच सूक्ष्म अंतर है? (यदि यह शैली की बात है, क्यों किसी को उन्हें एक ही फाइल में प्रयोग करेंगे)

उत्तर

34

नहीं, दोनों के बीच कोई अंतर नहीं है जब इस तरह से इस्तेमाल किया है। उत्तरार्द्ध रूप (defined() का उपयोग करके) उपयोगी होता है जब प्रारंभिक #if या बाद में #elif स्थितियों में से एक को अधिक जटिल परीक्षण की आवश्यकता होती है। #ifdef अभी भी काम करेगा, लेकिन यह उस मामले में #if defined() का उपयोग कर स्पष्ट हो सकता है। उदाहरण के लिए, यदि इसे जांचने की आवश्यकता है कि एक से अधिक मैक्रो परिभाषित किए गए हैं, या यदि यह एक विशिष्ट मान के बराबर है।

विचरण (एक फ़ाइल में दोनों का प्रयोग करके) जैसा कि ऊपर उल्लेख है, या बस गरीब अभ्यास, असंगत जा रहा द्वारा उपयोग में विशिष्ट बारीकियों पर निर्भर कर सकता है।

3

संदर्भ दिया था, वे ही कर रहे हैं: आप केवल एक मैक्रो पहचानकर्ता के अस्तित्व के लिए जाँच कर रहे हैं।

हालांकि, #if फॉर्म आपको अभिव्यक्तियों का मूल्यांकन करने की अनुमति देता है, जो उपयोगी हो सकता है।

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