इस प्रश्न के भविष्य के दर्शकों के लिए, मैं यह बताना चाहता हूं कि आपको बंदर से बचना चाहिए ।
हेडर फाइलें घोषणाओं के लिए हैं।
हेडर फाइलें हर .cppफ़ाइल के लिए एक बार संकलित हो जाती हैं जो प्रत्यक्ष या अप्रत्यक्ष रूप से होती #includesहैं, और किसी भी फ़ंक्शन के बाहर कोड प्रोग्राम इनिशियलाइज़ेशन से पहले चलाया जाता है main()।
डालकर: foo::i = VALUE;शीर्ष लेख में, हर फ़ाइल के लिए foo:iमान VALUE(जो कुछ भी है) .cppसौंपा जाएगा, और ये असाइनमेंट main()चलने से पहले एक अनिश्चित क्रम (लिंकर द्वारा निर्धारित) में होगा ।
क्या होगा यदि हम #define VALUEअपनी .cppफ़ाइलों में से एक में एक अलग संख्या हो ? यह ठीक संकलित करेगा और हमारे पास यह जानने का कोई तरीका नहीं होगा कि कार्यक्रम चलाने तक कौन जीते।
कभी भी #includeएक .cppफ़ाइल के लिए एक हेडर में निष्पादित कोड नहीं डाला जाता है कि आप कभी फ़ाइल नहीं करते हैं।
गार्ड्स को शामिल करें (जो मैं मानता हूं कि आपको हमेशा उपयोग करना चाहिए) आपको कुछ अलग करने से बचाता है: एक ही हेडर अप्रत्यक्ष रूप से #includeएक ही .cppफाइल को संकलित करते हुए कई बार होता है।