static - linkage error with non-member functions -
<पूर्व> ------------------ blah.h ----- ------------------- #pragma नाम स्थान एक बार कुछ नामस्थान {स्थिर शून्य कुछ विधि () {}} ----------------- Blah.c -------------------------- #include "blah.h" int main (int argc, char ** argv) {SomeNamespace: : someMethod (); वापसी 0; }
उपरोक्त काम ठीक है लेकिन अगर मैं 'स्थिर' को छोड़ देता हूं:
> stdafx.obj: त्रुटि LNK2005: "शून्य __cdecl कुछ नामस्थान :: कुछ मोड (शून्य)" (? SomeMames @ someNamespace @@ YAXXZ) पहले से ही Dude.obj 1> ... \ Debug \ Dude.exe में परिभाषित है: घातक त्रुटि LNK1169: एक या अधिक गुणा अधिक परिभाषित प्रतीकों पाया
मैंने पढ़ा है क्या 'स्थिर' गैर सदस्यीय कार्यों के लिए करता है ... ...
... इसे आंतरिक लिंक देना ताकि यह संकलन इकाई के बाहर दिखाई न जाए - यानी, (ओवर-सरलीफाइड) लिंकर नहीं करेगा इसे देखें। 'स्थैतिक' का यह उपयोग नापसंद किया गया है, और इस सीमा को लागू करता है कि फ़ंक्शन का उपयोग टेम्पलेट तर्क के रूप में नहीं किया जा सकता है। आधुनिक तरीका यह है कि किसी अज्ञात नेमस्पेस में फ़ंक्शन डाल दिया जाए ...
लेकिन यह बात है कि मैं विधि को उजागर करना चाहता हूं। मैं क्या कर रहा हूँ?
- घोषणा (यानी
void foo (int x);
) - परिभाषित करें .c में (अर्थात
void foo (int x) {] ..}
)
Comments
Post a Comment