2011-02-17 15 views
6

.pch फ़ाइल का महत्व क्या है और "#ifdef ओबीजेसी" का महत्व क्या है?<AppName> .pch फ़ाइल उपयोग

इसके अलावा, हम "#ifdef IS_PRODUCTION" जैसे पैरामीटर को परिभाषित करते हैं, जिन्हें .pch फ़ाइल में चेक किया गया है।

उत्तर

13

.pch एक प्री-कंपाइल हेडर है।

C और C++ प्रोग्रामिंग भाषाओं में, एक हेडर फाइल एक फाइल जिसका पाठ स्वचालित रूप से सी पूर्वप्रक्रमक, आमतौर पर स्रोत फ़ाइल में संकलक निर्देशों के उपयोग के द्वारा निर्दिष्ट द्वारा एक अन्य स्रोत फ़ाइल में शामिल किया जा सकता है।

#ifdef OBJC संकलक जानते हैं कि कोड ऑब्जेक्टिव-सी है की सुविधा देता है।

#ifdef IS_PRODUCTION कुछ आप अपने दम पर परिभाषित किया है, एक निर्देश संकलक बता कुछ ही अगर यह परिभाषित किया गया है करने के लिए, एक उत्पादन निर्माण के लिए सबसे अधिक संभावना कुछ।

+0

ठीक है। "#ifdef __OBJC__" का महत्व क्या है? और हम "#ifdef IS_PRODUCTION" जैसी स्थिति में रखे मैक्रोज़ को परिभाषित करते हैं? – Abhinav

+1

आप इन्हें उपयोग करने के लिए कहीं भी परिभाषित कर सकते हैं, बस उस फ़ाइल को आयात करें, जिसमें वे हैं। – WrightsCS

+3

थोड़ा गुदा प्रतिरक्षी, शायद, लेकिन "#ifdef ओबीजेसी' कंपाइलर को यह बताता है कि कोड उद्देश्य-सी है" काफी भ्रामक है यह किसी को कुछ भी नहीं बता रहा है, बल्कि यह जांच कर रहा है कि क्या ओबीजेसी संकलित समय पर ज्ञात/उपलब्ध है और यह सुनिश्चित करना है कि इसके निहित कोड को अन्यथा संकलन के दौरान छोड़ा गया हो। 10 मामलों में से 9 में प्रभाव समान हो सकता है, फिर भी तकनीकी प्रभाव काफी अलग हैं। कंपाइलर को '#ifdef ओबीजेसी' के माध्यम से और अधिक विपरीत जानकारी नहीं मिलती है। यह सब के बाद कोड (और संभावित रूप से महत्वपूर्ण) को छोड़ने की ओर जाता है। – Regexident

15

.pch फ़ाइल आपको UIKit.h और Foundation.h जैसी सामान्य फ़ाइलों को आयात करने से बचने की अनुमति देती है। यदि आपके पास .pch में आयात की गई फ़ाइलें हैं, तो आपके स्वयं के वर्गों को उन्हें आयात करने की आवश्यकता नहीं है।

#ifdef ओबीजेसी का महत्व यह है कि यदि आप उद्देश्य सी कोड बनाने के लिए कंपाइलर सेट नहीं रखते हैं तो आप ऑब्जेक्ट-सी कोड वाले हेडर आयात नहीं करते हैं (इसलिए संकलक त्रुटियों से बचने के लिए)।

आप लक्ष्य की बिल्ड सेटिंग्स के अंदर IS_PRODUCTION जैसे पैरामीटर को परिभाषित करते हैं। मैं आमतौर पर इसे "अन्य सी झंडे" में करता हूं।

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