2010-02-05 7 views
6

मैं एमएसवीएस में सी/सी ++ कोड विकसित करने के लिए बिल्कुल नया हूं लेकिन उन चीजों में से एक जो मुझे पहले ही उलझन में डाल चुका है, यही कारण है कि, मेरे प्रोजेक्ट में स्रोत और हेडर फाइलों का एक सेट जोड़ने के बाद, वे दिखाते हैं क्रमशः एमएसवीएस फ़ोल्डर 'स्रोत फ़ाइलें' और 'शीर्षलेख फ़ाइलें' के तहत, क्या मुझे बाद में संकलक को बताना होगा जहां मेरी हेडर फाइलें 'प्रोजेक्ट-> गुण-> सी/सी ++ -> सामान्य' के अंतर्गत हैं। ऐसा लगता है कि एमएसवीएस को पहले से ही परियोजना में शामिल हेडर फाइलों के सेट के माध्यम से किसी भी 'शामिल' ... '' कथन को हल करने का प्रयास करना चाहिए।एमएस विजुअल स्टूडियो प्रोजेक्ट हेडर फाइल

कोई भी यहां इस्तेमाल होने वाले तर्क पर टिप्पणी करने की परवाह करता है?

धन्यवाद, ट्रैविस

उत्तर

2

वास्तव में, तथाकथित "हैडर फ़ाइलें" फ़ोल्डर में अपने हेडर फाइल जोड़ना वैकल्पिक है। ऐसा करने के बावजूद आप "प्रोजेक्ट-> गुण -> ...." में हेडर पथ निर्दिष्ट कर सकते हैं और यह अभी भी काम करेगा।

आप केवल अपनी प्रोजेक्ट की हेडर फाइलों के परिप्रेक्ष्य से सोच रहे हैं जिसे "हेडर फाइल" फ़ोल्डर में जोड़ा जा सकता है, कई तृतीय पक्ष पुस्तकालयों वाली एक बड़ी परियोजना के बारे में क्या, आप निश्चित रूप से नहीं जा सकते हैं और प्रत्येक शीर्षलेख को जोड़ते रह सकते हैं अपने फ़ोल्डर में फ़ाइल करें।

तो, सभी को एक कॉन्फ़िगरेशन में एकीकृत करने के लिए, इस तरह से चुना जाना चाहिए था।

उपरोक्त उद्धृत सभी सामग्री सिर्फ मेरी समझ है। मेरे पास इसका समर्थन करने के लिए कोई सबूत नहीं है। तो, अग्रिम में मेरी माफी यह गलत है। कृपया डाउनवॉट्स के साथ मुझे बमबारी न करें। :)

+0

आपकी प्रतिक्रिया के लिए जय धन्यवाद। मैं मानता हूं कि बड़ी परियोजनाओं को अभी भी "परियोजना-> गुण" सुविधा की आवश्यकता होगी। उस ने कहा, मुझे अभी भी लगता है कि प्रोजेक्ट कंपाइलर स्वचालित रूप से # अंतर्निहित रिज़ॉल्यूशन के लिए प्रोजेक्ट हेडर फाइलों का संदर्भ लेता है एक सहज विशेषता है जिसे अतिरिक्त बाहरी निर्देशिकाओं की आवश्यकता के साथ आसानी से कार्यान्वित किए बिना आसानी से कार्यान्वित किया जा सकता है। मैं आपके तर्क में एक निश्चित तर्क को पहचानता हूं कि एक एकीकृत विन्यास तंत्र वांछनीय है। – Travis

+0

@Travis, अगर आपने देखा होगा कि आप आईडीई में अपनी "हेडर फ़ाइलें" फ़ोल्डर में अपनी डिस्क पर किसी भी फ़ोल्डर से फ़ाइलों को जोड़ सकते हैं। साथ ही, आपकी स्रोत फ़ाइल में कभी-कभी आप शीर्षलेखों को विभिन्न कारणों से "# शामिल फ़ोल्डर 1/myheader.h" के रूप में शामिल कर सकते हैं। इस मामले में आपको संकलक को फ़ोल्डर 1 सहित बिना पथ देना होगा। अब, आईडीई को अनुमान लगाने के लिए, डिस्क और आईडीई में फ़ोल्डर संरचना को मानचित्र करना होगा जो आईडीई में एक असुरक्षित प्रतिबंध लाएगा। उस ने कहा, यदि आईडीई में कुछ और उपयोगकर्ता अनुकूल सुविधा लाई गई है, तो आप सुझाव देते हैं कि मैं निश्चित रूप से इसका स्वागत करता हूं। :) – Jay

2

हेडर फ़ाइलों की खोज निर्धारक होना चाहिए। आपकी परियोजना में एक ही नाम के साथ कई फाइलें हो सकती हैं। उस स्थिति में, आप संक्रामक को इस भ्रम को हल करने के लिए कैसे चाहते हैं?

एक और बात यह है कि निर्देशिका में हेडर फाइलों को देखने के लिए कहां है, सभी कंपाइलरों की एक ऐतिहासिक विशेषता है (बहुत अधिक?)।

यह आपको अपने विजुअल स्टूडियो प्रोजेक्ट में हेडर फ़ाइलों का एकमात्र उपयोग के साथ छोड़ देता है: विजुअल स्टूडियो से उन्हें आसानी से खोलने में सक्षम होना। बस !

+0

आपकी प्रतिक्रिया के लिए बेनोइट धन्यवाद। हालांकि मैं आपसे सहमत हूं कि वीएस प्रोजेक्ट में हेडर फाइलों का एकमात्र उपयोग उन्हें खोलने में आसानी के लिए प्रतीत होता है, मुझे लगता है कि यह संभवतः एक डिज़ाइन दोष या कम से कम गैर-सहज ज्ञान युक्त है। जैसा कि मैंने पिछली टिप्पणी में उल्लेख किया है, मुझे यकीन नहीं है कि उप-हेडर फ़िल्टर/फ़ोल्डरों का उद्देश्य अलग-अलग नामस्थान प्रदान नहीं करना है जो स्रोत कोड में निर्धारक # अंतर्निहित पथों की नकल करते हैं। किसी भी दर पर, मैं वीएस विकास प्रतिमान को समझने में मेरी सहायता करने में आपकी सहायता की सराहना करता हूं। – Travis

1

सबसे पहले, क्या आपने एक नया सी/सी ++ प्रोजेक्ट बनाया है? यदि ऐसा है तो इसे अपनी पसंद के स्थान पर एक निर्देशिका बनाना चाहिए। एक बार ऐसा करने के बाद आप अपनी परियोजना (एमएसवीएस में समाधान विंडो में) पर राइट क्लिक कर सकते हैं और अपनी परियोजना में एक नई फाइल जोड़ सकते हैं। उदाहरण के लिए, आप प्रोजेक्ट में एक स्रोत फ़ाइल (.cpp) और हेडर फ़ाइल (.h) जोड़ सकते हैं। एक बार ऐसा करने के बाद, आपको अपनी स्रोत फ़ाइल में हेडर फ़ाइल को शामिल करने में सक्षम होने के लिए अपनी स्रोत फ़ाइल में #include "yourfile.h" लिखना होगा। ध्यान दें कि आप नई फाइलें और मौजूदा फाइलें जोड़ सकते हैं। आशा है कि ये आपकी मदद करेगा!

+0

हां, मैंने सी/सी ++ प्रोजेक्ट बनाया है लेकिन मैंने 'मौजूदा कोड विज़ार्ड' का उपयोग करके ऐसा किया है। मैं विंडोज़ के तहत संकलित करने के लिए एक तृतीय पक्ष ओपन सोर्स कोड बेस प्राप्त करने का प्रयास कर रहा था। मेरा लक्ष्य किसी भी स्रोत कोड को बदलने की ज़रूरत नहीं थी क्योंकि इस कोड बेस को पहले ही लिनक्स और मैकोज़ के तहत संकलित किया गया है। इस प्रकार, मैं वास्तव में # अंतर्निहित बयान बदलना नहीं चाहता था। यद्यपि आपकी प्रतिक्रिया के लिए धन्यवाद। – Travis

+0

मुझे विश्वास नहीं है कि किसी भी कोड को बदलना है ... यदि आप एक नई परियोजना बनाते हैं, तो आपको बस परियोजना में मौजूदा फाइलें जोड़ने की ज़रूरत है और यह सब कुछ है। – Partial

3

प्रोजेक्ट फ़ाइलों का उपयोग आईडीई द्वारा आपकी फ़ाइलों का ट्रैक रखने के लिए किया जाता है, लेकिन कंपाइलर को उस जानकारी तक पहुंच नहीं है। प्रत्येक फ़ाइल फ़ाइल को संकलित करते समय फ़ाइल पथ शामिल किया जाता है।

+0

जबकि प्रश्न "कंपाइलर को बताएं" वाक्यांश का उपयोग करता है, यह संदर्भ से बहुत स्पष्ट है कि उसका मतलब आईडीई की परियोजना सेटिंग्स में है। आईडीई "कंपाइलर" को कॉल करने के लिए यह असामान्य नहीं है (भले ही यह अपरिहार्य है, कड़ाई से बोल रहा हो)। –

+0

हाँ, धन्यवाद, मैं आईडीई के बारे में बात कर रहा था। एक एकीकृत विकास पर्यावरण के रूप में मैंने माना कि यह प्रोजेक्ट फ़ाइलों को कंपाइलर के साथ एकीकृत करेगा ताकि कमांड लाइन प्रोसेसिंग का विवरण बड़े हिस्से में समेकित हो। अब मैं समझता हूं कि आईडीई कुछ तरीकों से संकलक पर एक पतली लिबास है जो मैंने पहली बार अपेक्षा की थी। जवाब देने के लिए धन्यवाद। – Travis

3

मुझे लगता है कि ऐसा इसलिए है क्योंकि निर्देशिका में एक शीर्षलेख होने का मतलब यह नहीं है कि आप चाहते हैं कि निर्देशिका किसी अन्य शीर्षलेख की खोज करे। उस विशेष शीर्षलेख को हेडर के पथ को निर्दिष्ट करके शामिल किया जा सकता है, या यह स्पष्ट रूप से पाया जा सकता है क्योंकि यह उसी फ़ाइल में है जिसमें फ़ाइल शामिल है।

सभी ने कहा (और यह सिर्फ अटकलें है), मुझे लगता है कि आप जो चाहते हैं वह एक उचित अनुरोध है (यह ऐसा कुछ है जो मुझे पहले निराशा का एक छोटा सा कारण बनता है) - कम से कम एक विकल्प या पूछे जाने पर।

+0

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

0

मैंने कभी यह समस्या नहीं देखी थी।एक बार जब आप एक प्रोजेक्ट बनाते हैं और अपनी प्रोजेक्ट में आईडीई में कोई भी प्रोजेक्ट फ़ोल्डर हेडर फ़ाइल जोड़ते हैं, तो आप अपने स्रोत कोड को शामिल और संकलित करके हेडर फ़ाइल जोड़ सकते हैं। यदि वांछित हेडर फ़ाइल आपके प्रोजेक्ट को बनाने वाले फ़ोल्डर में मौजूद नहीं है, तो आपको प्रोजेक्ट गुणों में हेडर निर्देशिका जोड़नी चाहिए जैसा आपने कहा था :)

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