मैं इसका जवाब एक अनुस्मारक के रूप में दे रहा हूं, इसी ओपी के "user1949346" उत्तर पर अपनी टिप्पणी (बिंदुओं) को इंगित करने के लिए।
तो पहले से ही जवाब दिया: या तो रास्ता ठीक है। अपने स्वयं के छापों के जोर देकर पीछा किया।
परिचयात्मक, जैसा कि पिछले नामित टिप्पणियों में भी कहा गया है, मेरी राय है कि C++
हेडर एक्सटेंशन को प्रस्तावित किया जाता है .h
यदि वास्तव में इसके खिलाफ कोई कारण नहीं है।
चूंकि ISO / IEC दस्तावेज़ हेडर फ़ाइलों के इस अंकन का उपयोग करते हैं और .hpp
उनके भाषा दस्तावेज़ों में कोई स्ट्रिंग मिलान भी नहीं होता है C++
।
लेकिन मैं अब एक उचित कारण के लिए लक्ष्य कर रहा हूं कि दोनों में से कोई भी तरीका ठीक है, और विशेष रूप से यह स्वयं की भाषा का विषय क्यों नहीं है।
तो अब हम शुरू करें।
C++
प्रलेखन (मैं वास्तव में संस्करण N3690 से संदर्भ ले रहा हूँ) को परिभाषित करता है एक शीर्ष लेख निम्न सिंटैक्स के अनुरूप नहीं है:
2.9 हैडर के नाम
header-name:
< h-char-sequence >
" q-char-sequence "
h-char-sequence:
h-char
h-char-sequence h-char
h-char:
any member of the source character set except new-line and >
q-char-sequence:
q-char
q-char-sequence q-char
q-char:
any member of the source character set except new-line and "
तो जैसा कि हम इस भाग से निकाल सकते हैं, हेडर फ़ाइल नाम कुछ भी हो सकता है जो स्रोत कोड में मान्य है। '\n'
पात्रों को छोड़कर और अगर यह इसे शामिल करने पर निर्भर करता है, तो इसे शामिल <>
करने की अनुमति नहीं है >
। या दूसरे तरीके से अगर इसे शामिल किया गया है तो इसे ""
शामिल करने की अनुमति नहीं है "
।
दूसरे शब्दों में: यदि आपके पास फ़ाइलनामों का समर्थन करने वाला वातावरण है prettyStupidIdea.>
, जैसे कि:
#include "prettyStupidIdea.>"
मान्य होगा, लेकिन:
#include <prettyStupidIdea.>>
अमान्य होगा। उसी के आसपास दूसरा रास्ता।
और भी
#include <<.<>
एक मान्य समावेशी हेडर फ़ाइल नाम होगा।
यहां तक कि यह इसके अनुरूप होगा C++
, यह एक बहुत ही सुंदर विचार होगा, थो।
और यही कारण .hpp
है कि मान्य भी है।
लेकिन यह भाषा के लिए निर्णय लेने वाली समितियों का परिणाम नहीं है!
इसलिए उपयोग करने के बारे में चर्चा करना इस बारे में करने के .hpp
समान है .cc
, .mm
या इस विषय पर अन्य पोस्ट में मैंने कभी और क्या पढ़ा है।
मुझे स्वीकार करना होगा कि मेरे पास कोई सुराग नहीं है जहां 1.hpp
से आया था , लेकिन मैं कुछ पार्सिंग टूल, आईडीई या किसी अन्य चीज़ के आविष्कारक से शर्त लगा सकता हूं जो इस विचार से आया था कि कुछ आंतरिक प्रक्रियाओं का अनुकूलन करने के लिए या केवल कुछ का आविष्कार करने के लिए (शायद उनके लिए भी जरूरी है) ) नए नामकरण सम्मेलनों।C++
लेकिन यह भाषा का हिस्सा नहीं है।
और जब भी कोई इसे इस तरह इस्तेमाल करने का फैसला करता है। यह हो सकता है क्योंकि वह इसे सबसे अधिक पसंद करता है या क्योंकि वर्कफ़्लो के कुछ अनुप्रयोगों को इसकी आवश्यकता होती है, यह कभी भी 2 भाषा की आवश्यकता नहीं है। तो जो कोई भी कहता है कि "पीपी इसलिए है क्योंकि इसका उपयोग सी ++ के साथ किया जाता है", बस भाषाओं की परिभाषा के संबंध में गलत है।
C ++ पिछले पैराग्राफ का सम्मान करने वाली किसी भी चीज़ की अनुमति देता है। और अगर कोई ऐसी चीज है जिसका उपयोग करने के लिए समिति ने प्रस्तावित किया है, तो यह उपयोग कर रहा है .h
क्योंकि यह आईएसओ दस्तावेज़ के सभी उदाहरणों में मुकदमा दायर किया गया है।
निष्कर्ष:
जब तक आपको .h
ओवर .hpp
या वाइज़ वर्सा के उपयोग की कोई आवश्यकता नहीं दिखती / महसूस नहीं होती , आपको परेशान नहीं होना चाहिए। क्योंकि दोनों मानक के संबंध में समान गुणवत्ता का वैध हेडर नाम होगा। और इसलिए कुछ भी है कि आवश्यकता है आप उपयोग करना .h
या .hpp
मानक जो भी अन्य अतिरिक्त प्रतिबंधों का खंडन किया जा सकता है की एक अतिरिक्त प्रतिबंध नहीं है नहीं एक दूसरे के साथ अनुरूप हैं। लेकिन जैसा कि ओपी ने किसी भी अतिरिक्त भाषा प्रतिबंध का उल्लेख नहीं किया है, यह सवाल का एकमात्र सही और स्वीकार्य जवाब है
* " .h या * .अपनी कक्षा की परिभाषाओं के लिए। "
दोनों समान रूप से सही और लागू होते हैं जब तक कि कोई बाहरी प्रतिबंध मौजूद न हो।
1 जो मैं जानता हूं, जाहिरा तौर पर, यह बढ़ावा देने वाला ढांचा है जो उस .hpp
विस्तार के साथ आया है ।
2 बेशक मैं यह नहीं कह सकता कि कुछ भविष्य के संस्करण इसके साथ क्या लाएंगे!