2009-06-25 8 views
103

मैं सोच रहा हूं कि आपको <Header.h> या "Header.h" का उपयोग करने की अनुमति है या नहीं, जब आप उद्देश्य-सी में फ़ाइलों को आयात कर रहे हैं। अब तक मेरा अवलोकन यह है कि आप अपनी प्रोजेक्ट में फ़ाइलों के लिए उद्धरण चिह्न "" का उपयोग करते हैं, जब आप लाइब्रेरी या ढांचे का संदर्भ दे रहे हैं तो आपको कार्यान्वयन स्रोत मिल गया है, और कोण ब्रैकेट <> कोण हैं।# कोण ब्रैकेट्स का उपयोग करके आयात करें < > और उद्धरण चिह्न

लेकिन यह वास्तव में कैसे काम करता है? ब्रैकेट का उपयोग करने के लिए मुझे अपनी कक्षाएं प्राप्त करने के लिए क्या करना होगा? अभी एक्सकोड मुझे अपने हेडर के लिए ऐसा करने की अनुमति नहीं देगा।

इसके अलावा, कुछ ढांचे के शीर्षकों को देखकर, मैं देखता हूं कि शीर्षलेख <frameworkname/file.h> के साथ एक दूसरे का संदर्भ देते हैं। कि कैसे काम करता है? यह जावा में संकुल की तरह दिखता है, लेकिन जहां तक ​​मुझे पता है, उद्देश्य-सी में पैकेज जैसी कोई चीज़ नहीं है।

उत्तर

104

उद्देश्य-सी में यह सी/सी ++ के साथ आम है; उद्धृत रूप फाइलों के "स्थानीय" के लिए है (आपको वर्तमान फ़ाइल से सापेक्ष पथ निर्दिष्ट करना होगा, उदाहरण के लिए #include "headers/my_header.h"), जबकि कोण-ब्रैकेट फॉर्म "वैश्विक" के लिए है - उनमें से कहीं भी पथ शामिल है कंपाइलर के लिए (उदाहरण के लिए #include <math.h>)।

तो अपने स्वयं के हेडर < >" " का उपयोग करने के लिए आपको कंपाइलर को अपने हेडर निर्देशिका के लिए या तो रिश्तेदार या पूर्ण पथ को पारित करने की आवश्यकता है। Xcode में ऐसा करने के तरीके के बारे में जानकारी के लिए "How to add a global include path for Xcode" देखें।

अधिक जानकारी के लिए this MSDN page देखें।

+1

मुझे एफ़नेटवर्किंग को #import के रूप में संदर्भित करने वाले गिटहब प्रोजेक्ट के साथ कोई समस्या थी, इसलिए मुझे एक शीर्षलेख खोज पथ के रूप में $ (SRCROOT)/lib/AFNetworking करना पड़ा। इस फ़ोल्डर के तहत AFNetworking नामक एक और फ़ोल्डर है, यह है कि कोण ब्रैकेट के साथ आयात उस पथ के साथ कैसे मिलता है। आम तौर पर # आयात "AFHTTPRequestOperationManager.h" काम करेगा लेकिन इस परियोजना के लिए यह सिर्फ अलग-अलग संदर्भ देता है। – Brennan

6

"<>" का उपयोग करके अपने स्वयं के वर्ग आयात करने के लिए आपको कंपाइलर के lib फ़ोल्डर में हेडर फाइल (* .h) डालना होगा या अपने lib फ़ोल्डर में एक सिस्टम VARIABLES को सेट करना होगा।

12

सी में सम्मेलन में <> ब्रैकेट कि हेडर फाइल उपयोगकर्ता या स्थानीय निर्देशिका में 'प्रणाली' निर्देशिका और "" में खोजा जाता है।

सिस्टम और स्थानीय की परिभाषा मुझे लगता है कि थोड़ा अस्पष्ट है। मेरा मानना ​​है कि यह पथ निर्देशिका या सीपीपीएफएलजीएस में सिस्टम निर्देशिकाओं में दिखता है और स्थानीय निर्देशिका या निर्देशिका के साथ निर्दिष्ट I-compiler को "header.h" फ़ाइलों के लिए खोजा जाता है।

मुझे लगता है कि यह उद्देश्य-सी के लिए समान रूप से काम करता है।

-3

हेडर फ़ाइल क्या है? शीर्षलेख फ़ाइलों में फ़ंक्शंस और वेरिएबल की परिभाषाएं होती हैं जिन्हें प्री-प्रोसेसर # अंतर्निहित कथन का उपयोग कर किसी भी सी प्रोग्राम में शामिल किया जा सकता है। मानक हेडर फाइलें प्रत्येक कंपाइलर के साथ प्रदान की जाती हैं, और क्षेत्रों की एक श्रृंखला, स्ट्रिंग हैंडलिंग, गणितीय, डेटा रूपांतरण, मुद्रण और चर के पढ़ने को कवर करती हैं। पूर्व- # इसमें शामिल है जैसे इनपुट के बारे में जानकारी स्कैनफ(), और एक कंपाइलर में printf() फ़ंक्शन और आदि जैसे डालें।

शामिल

1) # शामिल: - यह एक पूर्व प्रोसेसर है कि इस प्रक्रिया मुख्य कार्य करने की प्रक्रिया से पहले। प्री-प्रोसेसर का मुख्य कार्य प्रोग्राम के पर्यावरण को आरंभ करना है यानी हेडर फ़ाइल वाला प्रोग्राम है। 2)। एच: - (शीर्षलेख फ़ाइल) एक हेडर फ़ाइल एक्सटेंशन वाली एक फ़ाइल है। जिसमें सी फ़ंक्शन घोषणाएं और मैक्रो परिभाषाएं शामिल हैं और कई स्रोत फ़ाइलों के बीच साझा की जानी चाहिए। क्यू) दो प्रकार की हेडर फाइलें हैं: प्रोग्रामर जो फ़ाइलें लिखती हैं और आपके कंपाइलर के साथ आने वाली फ़ाइलें? ए) एक कोणीय ब्रैकेट में कोणीय-ब्रैकेट फॉर्म "वैश्विक" के लिए है - इसमें कहीं भी पाए गए पथ शामिल हैं जो कंपाइलर (उदाहरण # शामिल) पर लाइब्रेरी फ़ंक्शन का उपयोग करने के लिए उपयोग किया जाता है जो सभी तैयार परिभाषित है कंपाइलर में। सी सम्मेलन में हैडर < में हेडर फाइलें> ब्रैकेट को 'सिस्टम' निर्देशिकाओं में खोजा जाता है बी) उद्धरण चिह्न: - "header.h" उद्धृत रूप फाइलों के "स्थानीय" के लिए है (आपको रिश्तेदार को निर्दिष्ट करने की आवश्यकता है वर्तमान फ़ाइल से पथ, उदाहरण के लिए # शामिल करें "हेडर/my_header.h") सी में सम्मेलन यह है कि "" हेडर फाइलें उपयोगकर्ता या स्थानीय निर्देशिका में खोजी जाती हैं। इसमें एक फ़ाइल को दूसरे में शामिल किया जाना चाहिए। (फ़ाइल शामिल)। इसका उपयोग दो मामलों में किया जा सकता है: केस 1: यदि हमारे पास एक बहुत बड़ा प्रोग्राम है, तो कोड सबसे अलग विभाजित int कई अलग-अलग फाइलों में से प्रत्येक में संबंधित कार्यों का एक सेट होता है। केस 2: कुछ फ़ंक्शन और माइक्रोस्कोज़ परिभाषाएं हैं जिन्हें हम लिखने वाले सभी कार्यक्रमों में सबसे अधिक आवश्यक हैं।

User Header Search Paths 
Header Search Paths 

आप हैडर खोजें पथ में जोड़ देते हैं तो स्वयं के फ़ोल्डर में शामिल हैं, तो आप बिना किसी समस्या के कोणीय कोष्ठक का उपयोग कर सकते हैं: पूर्व

0

बस एक ही समस्या पर ठोकर खाई, वहाँ खोज पथ के 2 प्रकार Xcode है ।

1

या Always Search User Path से YES पर सेट करें ताकि आप कोण ब्रैकेट का उपयोग कर सकें।