2011-03-02 20 views
163

संभावित डुप्लिकेट:
*.h or *.hpp for your class definitions
Correct C++ code file extension? .cc vs .cppग .cc बनाम सीपीपी .hpp .cxx बनाम ज बनाम बनाम बनाम

मुझे लगता है कि करने के लिए है कि यह करने के लिए इस्तेमाल के लिए इस्तेमाल किया हो:

  • .h फ़ाइलें सी और सी ++ के लिए हेडर फाइलें हैं, और आमतौर पर केवल घोषणा होती है माहौल।
  • .c फ़ाइलें सी स्रोत कोड हैं।
  • .cpp फ़ाइलें सी ++ स्रोत कोड (जो सी स्रोत कोड भी हो सकती हैं) हैं।

तो जैसे .hpp, .cc, और .cxx फ़ाइलें साथ आया था, और मैं पूरी तरह से उलझन में मिल गया ... क्या उन के बीच का अंतर (रों) है? आप "नए" का उपयोग कब करते हैं?

+0

मैं मेकफ़ाइल सम्मेलनों के साथ स्थिरता के लिए '.cpp'' पर '.cxx' पसंद करता हूं (देखें http://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html) – Christoph

उत्तर

227

ऐतिहासिक रूप से, सी ++ के लिए इस्तेमाल किया पहला एक्सटेंशन, .c और .h थे वास्तव में की तरह के लिए सी यह व्यावहारिक समस्याओं, विशेष रूप से .c जो निर्माण सिस्टम आसानी से सी ++ और सी फ़ाइलों को अलग करने की अनुमति नहीं था का कारण बना।

यूनिक्स, जिस पर सी ++ विकसित किया गया है, में केस संवेदनशील फ़ाइल सिस्टम हैं। इसलिए कुछ ने C++ फ़ाइलों के लिए .C का उपयोग किया। अन्य इस्तेमाल .c++, .cc और .cxx.C और .c++ समस्या है कि वे अन्य फ़ाइल सिस्टम पर उपलब्ध नहीं हैं और उनका उपयोग जल्दी से गिरा दिया गया है। डॉस और विंडोज सी ++ कंपाइलर्स .cpp का उपयोग करने के लिए इच्छुक हैं, और उनमें से कुछ कॉन्फ़िगर करने के लिए असंभव नहीं होने पर पसंद को मुश्किल बनाते हैं। पोर्टेबिलिटी विचार ने एमएस-विंडोज के बाहर भी सबसे आम पसंद किया है।

हेडर इसी .H, .h++, .hh, .hxx और .hpp इस्तेमाल किया है। लेकिन मुख्य फाइलों के विपरीत, .h इस दिन तक रहता है सी ++ के लिए भी एक लोकप्रिय विकल्प नुकसान के साथ भी यह जानने की अनुमति नहीं देता है कि हेडर को सी संदर्भ में शामिल किया जा सकता है या नहीं। मानक शीर्षलेखों में अब कोई विस्तार नहीं है।

साथ ही, कुछ .ii, .ixx, .ipp, .inl इनलाइन परिभाषा और .txx, .tpp और .tpl टेम्पलेट परिभाषा के लिए उपलब्ध कराने के हेडर के लिए प्रयोग कर रहे हैं। वे या तो शीर्षकों में परिभाषा प्रदान करते हैं, या मैन्युअल रूप से उन संदर्भों में शामिल होते हैं जहां उनकी आवश्यकता होती है।

कंपाइलर और औजार आमतौर पर इस बात की परवाह नहीं करते कि किन एक्सटेंशन का उपयोग किया जाता है, लेकिन सी ++ के साथ संबद्ध एक्सटेंशन का उपयोग करके उन्हें ट्रैक करने के तरीके को ट्रैक करने की आवश्यकता को रोकता है ताकि वे सही ढंग से उपयोग की जाने वाली भाषा को पहचान सकें।

2017 संपादित करें: दृश्य स्टूडियो की प्रयोगात्मक मॉड्यूल समर्थन मॉड्यूल इंटरफेस के लिए एक डिफ़ॉल्ट विस्तार के रूप में पहचान .ixx, बजना ++ .c++m, .cppm और .cxxm ही उद्देश्य के लिए पहचानना है।

20

यह वास्तव में कोई फर्क नहीं पड़ता।
यदि आप एक सी ++ कंपाइलर को .c फ़ीड करते हैं तो यह cpp के रूप में संकलित होगा, .cc/.cxx कुछ compilers द्वारा उपयोग किए जाने वाले .cpp का एक विकल्प है।

.एचपीपी हेडर फाइलों को अलग करने का प्रयास है जहां महत्वपूर्ण सी और सी ++ मतभेद हैं। .hpp के लिए आवश्यक सीपीपी रैपर या नेमस्पेस के लिए एक सामान्य उपयोग है और फिर सी और सी ++ दोनों में सी लाइब्रेरी का पर्दाफाश करने के लिए .h शामिल करें।

+0

मैं भी ध्यान दूंगा यूनिक्स जैसी प्रणालियों पर .cc अधिक सामान्य है (लेकिन किसी भी माध्यम से "मानक" नहीं), जहां .cpp विंडोज सिस्टम पर अधिक आम है। कम से कम मेरे अवलोकन में। –

+0

मैंने सोचा कि सूर्य का सी ++ कंपाइलर .cc का उपयोग करता है लेकिन मुझे कोई संदर्भ नहीं मिला। –

14

मैं सी ++ हेडर के लिए ".hpp" और सी भाषा शीर्षकों के लिए ".h" का उपयोग करता हूं। ".hpp" मुझे याद दिलाता है कि फ़ाइल में सी ++ भाषा के लिए कथन शामिल हैं जो सी भाषा के लिए मान्य नहीं हैं, जैसे "कक्षा" घोषणाओं के रूप में।

39

वे एक्सटेंशन वास्तव में नए नहीं हैं, वे पुराने हैं। :-)

जब सी ++ नया था, तो कुछ लोग स्रोत फ़ाइलों के लिए .C++ एक्सटेंशन चाहते थे, लेकिन यह अधिकांश फ़ाइल सिस्टम पर काम नहीं करता था। इसलिए उन्होंने इसके करीब कुछ, जैसे .cxx, या .cpp की कोशिश की।

दूसरों ने भाषा नाम के बारे में सोचा, और "incrementing" .c प्राप्त करने के लिए .cc या यहां तक ​​कि कुछ मामलों में। उस पर ज्यादा पकड़ नहीं लिया।

कुछ लोगों का मानना ​​था कि यदि स्रोत .cpp है, तो हेडर को मिलान करने के लिए .hpp होना चाहिए। मामूली सफल

4

आम तौर पर, .c और .h फ़ाइलें सी या सी-संगत कोड के लिए हैं, बाकी सब कुछ सी ++ है।

कई लोग सी ++ फ़ाइलों के लिए एक सतत जोड़ी का उपयोग करना पसंद करते हैं: .cpp .hpp के साथ .hxx, .hxx के साथ .hxx, .cc के साथ .hh, आदि। मेरी व्यक्तिगत वरीयता .cpp और .hpp के लिए है।

5

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

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