2012-02-26 14 views
5

सी ++ की बात आती है जब मैं पूरी तरह से नोब हूं और मैं Moai पर XInput के माध्यम से Xbox 360 गेमपैड के लिए समर्थन जोड़ने का प्रयास कर रहा हूं।सी ++ हैडर फाइलों में केस संवेदनशीलता

  1. xinput Xinput

XInput

और

  1. xinput: जब मैं xinput के लिए शीर्ष लेख शामिल दो विकल्प हैं इसके अलावा, XInput का उपयोग करने के लिए मुझे windows.h शामिल करने की आवश्यकता है।

    #include <windows.h> 
    

    लेकिन ऑटो 2010 आवेषण

    #include <Windows.h> 
    

    Windows.h

    xinput/xinput के मामले में ऐसा लगता है विजुअल C++ एक्सप्रेस में पूरा: सभी उदाहरण मैंने देखा है निम्न सिंटैक्स का उपयोग वह केस-संवेदनशीलता मायने रखती है लेकिन विंडोज़ के मामले में यह कोई फर्क नहीं पड़ता।

    क्या हेडर फाइलों सहित केस-सेंसिटीविटी पदार्थ मायने रखता है? क्या इसमें कुछ तर्क है?

    क्या XInput अंतर केवल XInput नामक किसी चीज़ के लिए शीर्षलेख होने का विषय है और Xinput नामक किसी अन्य चीज़ को?

+0

संभावित दस्तावेज़ [जब हेडर फाइलें शामिल हैं, पथ पथ संवेदनशील है?] (Http://stackoverflow.com/questions/1951951/when-including-header-files-is-the-path-case- संवेदनशील) – IInspectable

उत्तर

4

शीर्षलेख नामों में केस संवेदनशीलता और निर्देश शामिल हैं कार्यान्वयन परिभाषित किया गया है। आम तौर पर यह इस बात पर काम करता है कि आप जिस मंच पर निर्माण कर रहे हैं वह केस संवेदनशील है या नहीं।

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

यह भी संभव है कि वीएस उससे बेहतर है और सर्वश्रेष्ठ केस मैच की खोज करेगा।

+1

मैं इसे एक से ऊपर रखूंगा क्योंकि यह केवल यह कहना है कि यह कार्यान्वयन है ओएस-परिभाषित के बजाय परिभाषित किया गया। आईएसओ का कहना है कि स्ट्रिंग्स के भीतर तारों का संचालन शामिल है, जो कि कार्यान्वयन के लिए काफी अधिक है। आम तौर पर, वह अंतर्निहित फाइल सिस्टम गुणों को मैप करेगा लेकिन यह आवश्यक नहीं है। असल में, कोई आवश्यकता नहीं है कि शीर्षलेख फाइल सिस्टम पर हों :-) – paxdiablo

2

विंडोज़ पर, फ़ाइल नाम केस-संवेदी नहीं हैं, और यह #include तक फैला हुआ है। कोई भी मामला करेगा।

कुछ प्लेटफॉर्म (जैसे लिनक्स) पर, फ़ाइल नाम ताकि आप वास्तविक फ़ाइल नाम से मेल करने की आवश्यकता होगी, केस-संवेदी होते।

+0

कंपाइलर को 'XInput' और' Xinput' के बीच अंतर कैसे पता चलता है? – NoobsArePeople2

+0

वे वर्ग नाम हैं, फ़ाइल नाम नहीं। कक्षाएं और अन्य सी चीजें हमेशा केस संवेदनशील होती हैं। – StilesCrisis

+2

@ NoobsArePeople2: * कंपाइलर * इन फ़ाइलों के बीच अंतर नहीं जानता है। कंपाइलर फ़ाइल को एक ऑपरेटिंग सिस्टम देता है। सी ++ स्रोत ओएस के बावजूद केस-संवेदी है, और इसमें 'वर्ग' नाम शामिल हैं (लेकिन उनकी फाइलें नहीं)। – Johnsyweb

4

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

+0

फाइल सिस्टम खोज की केस-संवेदनशीलता को नियंत्रित नहीं करता है। यह संकलक है (देखें 16.2.2 [cpp.include]: * "स्थानों को कैसे निर्दिष्ट किया गया है या पहचान की गई हेडर कार्यान्वयन-परिभाषित है।" *) – IInspectable

1

विंडोज़ केस सेंसिटिव नहीं है जैसा कि अन्य ने कहा है। लेकिन यह आपकी समस्या नहीं है। आपकी समस्या विजुअल स्टूडियो में शामिल फ़ाइल सेटिंग्स के साथ है।कंपाइलर मानक हेडर (<> सिंटैक्स का उपयोग करके हेडर समावेशन) की तलाश करेगा, क्रम में वे सेटअप कर रहे हैं। Tools->Options लॉन्च करें, और उसके बाद Projects and Solutions->VC++ directories देखें और Include Files का अनुक्रम देखें।

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