2009-07-14 11 views
10

आप ThisIsAHeaderFile.h नाम के एक हेडर फाइल है, तो निम्नलिखित अभी भी दृश्य स्टूडियो में फ़ाइल का पता लगा देगा:# स्टूडियो के साथ विजुअल स्टूडियो प्रीप्रोसेसर केस संवेदनशीलता को कैसे बल दें?

#include <ThisIsAheaderFile.h> 

वहाँ केस संवेदनशीलता को लागू करने के लिए इतना है कि #include एक त्रुटि में परिणाम होगा कोई तरीका है?

+0

मैंने यूनिक्स कोड बेस के साथ काम करते समय यह एक समस्या देखी है जो एक ही फ़ाइल नाम के दो संस्करणों का उपयोग कर सकती है, लेकिन विभिन्न मामलों के साथ। –

उत्तर

14

आप नहीं कर सकते, क्योंकि विंडोज फ़ाइल सिस्टम स्वयं केस-असंवेदनशील है।

यदि आप ऐसी स्थिति में आ सकते हैं जहां आपके पास RICHIE.h और richie.h दोनों थे, तो यह मामला संवेदनशीलता को नियंत्रित करने के लिए समझ में आ सकता है, लेकिन आप नहीं कर सकते।

+0

आप लिख सकते हैं IF .. इसमें शामिल है ... बॉयलर प्लेट प्रत्येक फ़ाइल के लिए ऐसा करने के लिए। WolfmanDragon

+5

दरअसल, यह बिल्कुल सही नहीं है। एनटीएफएस POSIX अनुपालन के हिस्से के रूप में फ़ाइल नामों के मामले को बरकरार रखता है, लेकिन फ़ाइल संचालन करते समय सब कुछ ऊपरी मामले में मानचित्र करता है। http://blogs.msdn.com/michkap/archive/2005/01/16/353873.aspx –

+0

सी ++ सिर्फ विंडोज़ बॉक्स से अधिक पर चलता है। – WolfmanDragon

0

एफएटी और एनटीएफएस दोनों मामले असंवेदनशील फ़ाइल सिस्टम हैं। फू और एफओओ वही फाइल हैं जहां तक ​​वे चिंतित हैं। हालांकि विंडोज ओएस आपके द्वारा फ़ाइल के लिए उपयोग किए जाने वाले मामले को सुरक्षित रखेगा। यदि आप फ़ाइल IIAheaderFile.h फ़ाइल नाम देते हैं तो यह फ़ाइल सिस्टम में उस तरह से दिखाई देगा। यद्यपि सभी सिस्टम फ़ंक्शन को खोलने के लिए कॉल किया जाता है, लेकिन वह फ़ाइल किसी भी आवरण का उपयोग कर सकती है।

+4

नहीं, एनटीएफएस केस संवेदनशील है (या रजिस्ट्री सेटिंग के साथ बनाया जा सकता है)। Win32, हालांकि, मामला असंवेदनशील है। बस एफवाईआई, चूंकि जवाब गलत है और सभी ... – jcolebrand

1

यह एक ही नाम वाली फाइलें बनाने के लिए संभव है (एनटीएफएस पर मामला अंतर है)। शायद सिगविन वाला कोई व्यक्ति इसे सत्यापित कर सकता है।

MSDN

फिर भी, तथापि, यह असंभव एक सामान्य विंडोज़ अनुप्रयोग से एक समय में इनमें से एक से अधिक उपयोग करने के लिए है।

+3

ऐसा करने के लिए एक वास्तविक अच्छे कारण की तरह लगता है। –

1

हालांकि विजुअल स्टूडियो के भीतर से इसे लागू करना संभव नहीं है, लेकिन सी/सी ++ स्रोत पर केवल प्रीप्रोसेसर चलाकर एक त्वरित जांच लागू कर सकता है। यह संस्करण नियंत्रण प्रणाली में पोस्ट-प्रतिबद्ध हुक के रूप में व्यावहारिक होने के लिए पर्याप्त रूप से पर्याप्त रूप से चलाएगा, और अगर फ़ाइल नामों में मामला मेल नहीं खाया गया है तो गलती होगी। तो:

  • लिनक्स में अपने निर्माण प्रणाली पूर्वप्रक्रमक-केवल चलाता

  • (gcc/g++ साथ -E) का समर्थन करने के विन्यस्त एक को लागू करें पूर्वप्रक्रमक-केवल के रूप में चलाने के बाद प्रतिबद्ध हुक, के लिए एक प्रारंभिक अधिसूचना ट्रिगर जिम्मेदार व्यक्ति और/या किसी नियमित रूप से इन त्रुटियों

बेशक

ठीक करने के लिए तैयार करने के लिए, इस कोड के लिए केंद्रीय भंडारण के रूप में एक VCS मान लिया गया है।

+0

यह एक अच्छा समाधान है, दूसरा एक साधारण स्क्रिप्ट या चलने वाले प्रीप्रोसेसर को कमेटर्स मशीन पर पूर्व प्रतिबद्धता के रूप में चलाएगा, और उपयोगकर्ता को स्वयं को साफ करने दें। – daramarak

+0

@ दारारामक: अगर कमेटर केस-असंवेदनशील फ़ाइल सिस्टम चलाता है तो वह कैसे मदद करेगा? – krlmlr

+0

चूंकि स्क्रिप्ट मामले का पता लगाने में सक्षम है, और जबकि मिंगव प्रीप्रोसेसर केस असंवेदनशील है (और ऐसा लगता है कि इसे चालू करने के लिए कोई विकल्प नहीं है), सिग्विन में जीसीसी केस संवेदनशील होगा। – daramarak

1

मैं यह इंगित करना चाहता हूं कि यह एक असफल समस्या है क्योंकि कई ओपी को इंगित करने की कोशिश करते हैं। मामला असंवेदनशीलता बिंदु के बगल में है। बिंदु Lorenz03Tx एक टिप्पणी में बताता है, भले ही फ़ाइल सिस्टम मामला अनिवार्य है, मामला बरकरार रखा गया है, इसलिए इसे नियंत्रित किया जा सकता है।

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

टी एल; डॉ

एक समाधान एक स्क्रिप्ट है कि बस बयान शामिल के लिए स्रोत फ़ाइलों को स्कैन करता है और उन्हें अपने साथ शामिल रास्तों से मिलान करने की कोशिश करता है उपयोग करने के लिए है।इस तरह की एक स्क्रिप्ट दृश्य स्टूडियो पोस्ट-बिल्ड इवेंट में जोड़ा जा सकता है, और इस प्रकार प्रत्येक बिल्ड पर चलाया जा सकता है, या (krlmlr से प्रेरित) केस संकुचन को लागू करने वाले एक कंपाइलर के प्रीप्रोसेसर का उपयोग करें।

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