2010-05-16 12 views
5

के बारे में त्वरित प्रश्न यह शायद एक बहुत ही मूर्ख सवाल है लेकिन मुझे यह सुनिश्चित करने की ज़रूरत है। मुझे एक हेडर फ़ाइल उदाहरण में कक्षा घोषणा दी गई है।सशर्त संकलन (ifndef)

#ifndef file_H 
#define file_H 

class ex{ 
private: 

public: 
}; 

#endif 

और मैं एक ही फ़ाइल है, जो मैंने किया है में विधि परिभाषाओं लिखने के लिए आवश्यक किया गया है, मेरे सवाल "#endif" रहना है जहां यह सिर्फ वर्ग घोषणा के बाद है या यह हो जाता है कक्षा विधि परिभाषाओं के बाद मेरी फ़ाइल के अंत में?

उत्तर

6

फ़ाइल के अंत में।

इस #ifndef पैटर्न के इस रूप का लक्ष्य ऐसी स्थिति को रोकने के लिए है जहां संकलन इकाई में एक ही घोषणा या परिभाषा दो बार प्रकट होती है।

ऐसा इसलिए किया जाता है क्योंकि सी फ़ाइल में कई एच फाइलें शामिल हो सकती हैं, जो कहीं भी श्रृंखला को उसी फ़ाइल में शामिल कर सकती हैं। यदि आप इनके बिना प्रीप्रोसेसर चलाते हैं, तो आपके पास एच फ़ाइल की कई प्रतियां होंगी। इस तरह, आपके पास कई प्रतियां हैं, लेकिन प्रीप्रोसेसर पहले मुठभेड़ के बाद सब कुछ अनदेखा करता है।

चूंकि आपको एक से अधिक बार परिभाषित नहीं किया जाना चाहिए, यदि आपको हेडर फ़ाइल में विधि परिभाषाएं रखना है, तो उन्हें #endif में रखें।

+0

आपको बहुत बहुत धन्यवाद – silent

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