2011-10-07 15 views
18

मैं "पाउंड अगर" या #if वाक्यविन्यास से थोड़ा उलझन में हूं, जब मैं कुछ कक्षाओं को देखता हूं तो मुझे लगता है।उद्देश्य सी "#if" वाक्यविन्यास

उदाहरण के लिए:

#if someConstant == someNumber 
    do something 
#elif 
    etc 

बनाम:

if (someConstant == someNumber) 
    do something 
else if { 
    do more stuff 
} 

क्या फर्क है, और क्यों #if का उपयोग करें?

उत्तर

28

#if आदि प्रीप्रोसेसर निर्देश हैं। इसका मतलब यह है कि उन्हें रनटाइम पर संकलित करने से पहले निपटाया जाता है। यह उपयोगी हो सकता है, उदाहरण के लिए, डिबगिंग व्यवहार है कि केवल संकलित जब आप debug के लिए निर्माण और परिभाषित करने में release नहीं:

#if DEBUG 
    #define ISRelease(x) [x release] 
#else 
    #define ISRelease(x) [x release], x = nil 
#endif 

(। जेफ लेमार्क के blog संहिता सौजन्य से) इस तरह आप नहीं है अपना ऐप सबमिट करने से पहले और पूरे डिबगिंग कोड को लोड करने से पहले अपने पूरे एप्लिकेशन के कोड से गुज़रने की आवश्यकता है। यह इन निर्देशों के उपयोग का एक छोटा सा उदाहरण है।

+0

#if #ifdef जैसा ही है ?? –

+0

नहीं - यदि आपने उपरोक्त '# if' को' # ifdef' ("यदि परिभाषित किया गया है) से बदल दिया है, तो सशर्त केवल तभी सफल होगा जब' DEBUG' पहले ही परिभाषित हो। एक '# ifndef' प्रीप्रोसेसर निर्देश भी है जो विपरीत परिणाम देता है (" यदि परिभाषित नहीं किया गया है ")। – Stuart

10

#ifप्रीप्रोसेसर निर्देश है।

ifभाषा निर्माण है।

अंतर इस तरह से है कि अंतिम कार्यक्रम संकलित किया गया है। जब आप #if का उपयोग करते हैं, तो उस निर्देश का नतीजा यह है कि अंतिम कार्यक्रम उन पंक्तियों पर क्या होगा। जब आप भाषा निर्माण का उपयोग करते हैं, तो निर्माण के लिए पारित अभिव्यक्ति का मूल्यांकन रनटाइम पर किया जाएगा, और संकलन-समय पर नहीं किया जाएगा।

0

पिछला उत्तर #if को डीबग से शब्दावली से उपयोग करते हैं और एक और आम उपयोग याद करते हैं: #if कोड के बड़े हिस्से पर टिप्पणी करने के लिए उपयोग किया जाता है। यह तब उपयोगी होता है जब प्रोग्रामर को कुछ ऐसी चीजों से छुटकारा पाना पड़ता है जिसमें पहले से ही टिप्पणियां हों।

#if 0 
    a lof of C code with /* style */ comments included 
#endif 

मैं इसका बहुत उपयोग करता हूं। किसी अन्य #if और टिप्पणी शैली पर लाभ - यह वास्तव में इसके भीतर टूटे हुए वाक्यविन्यास के बारे में परवाह नहीं करता है।

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