मैं समान परिदृश्य है से चर/समारोह संघर्ष से बचने के:कैसे नीचे बताये गए सी में दो पुस्तकालयों ++
मेरे पास एक हेडर फाइल first.h
यह एक समारोह है:
char* getName();
और संबद्ध cpp फ़ाइल first.cpp
होने समारोह परिभाषा
char* getName(){return "first";}
और second.h दूसरा हेडर फाइल यह है समारोह:
char* getName();
जुड़े cpp फ़ाइल second.cpp
होने समारोह परिभाषा
char* getName(){return "second";}
अब वहाँ एक main()
समारोह है:
#include "first.h"
#include "second.h"
int main(){
return 0;
}
जब मैं उन .h
फ़ाइलों में शामिल हैं, संकलक में एक त्रुटि देना फ़ंक्शन getName()
क्योंकि यह विरोधाभासी है।
कैसे बदले बिना इस समस्या से छुटकारा पाने के .h files
क्या फ़ंक्शन इनलाइन हैं, या असली शीर्षलेखों में केवल घोषणाएं हैं? यही कारण है कि मैं कभी समझ नहीं पा रहा हूं कि सी में नामस्थान क्यों नहीं हैं। टेम्पलेट्स और अधिभार के बिना, कुछ भी जटिल नहीं है, और वे सभी नामकरण विवादों को हल करेंगे और बेवकूफ उपसर्गों का अप्रचलित उपयोग प्रस्तुत करेंगे। – Jens
क्या यह 'सी' या 'सी ++' है? सी ++ के लिए इस ट्यूटोरियल का उपयोग करें: http://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm –
सी में इन हेडर फ़ाइलों को बदले बिना आप इस स्थिति से छुटकारा नहीं पा सकते हैं। अगर आप हेडर फाइलों में से एक विधि को स्थिर मानते हैं इन विधियों के लिए C++ में नेमस्पेस संकलित या उपयोग करेगा। यदि आप शीर्षलेख फ़ाइलों में से किसी एक का उपयोग करना चाहते हैं और हेडर बदलना नहीं चाहते हैं, तो शीर्षलेख फ़ाइलों में से एक को शामिल करने के लिए #ifndef संरचना का उपयोग करें। –