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