// SomeOtherClass.hpp
#pragma once
int someOtherCallMe();
class SomeOtherClass {
public:
static int callMe() {
static int _instance = 7;
++_instance;
return _instance;
}
};
// SomeOtherClass.cpp
#include "SomeOtherClass.hpp"
int
someOtherCallMe() {
return SomeOtherClass::callMe();
}
// main.cpp
#include "SomeOtherClass.hpp"
#include <iostream>
int
main() {
std::cout << SomeOtherClass::callMe();
std::cout << someOtherCallMe();
return 0;
}
मेरे पास तीन फ़ाइलें हैं: SomeOtherClass.hpp/cpp, main.cpp। उन फ़ाइलों के परिणामस्वरूप दो द्विआधारी: साझा लाइब्रेरी (SomeOtherClass.cpp का) और निष्पादन योग्य (main.cpp का, साझा लाइब्रेरी से जुड़ा हुआ)।सी ++ हेडर में परिभाषित स्थिर वर्ग विधियों में सी ++ स्थिर चर
क्या सी ++ गारंटी देता है कि static <any-type> _instance
किसी प्रोग्राम के निष्पादन के दौरान एक ही चर होगा (इससे कोई फर्क नहीं पड़ता कि कितनी द्विआधारी परिभाषित की गई थी)?
नोट स्थिति को स्पष्ट करने के लिए। इस परिस्थिति में मुझे जो भ्रम दिखाई देता है वह यह है कि, एक तरफ, SomeOtherClass::callMe
प्रोग्राम में दो बार परिभाषित किया गया है, इसकी अपेक्षा की जाती है (क्योंकि क्लास स्टेटिक सदस्य फ़ंक्शन वास्तव में आंतरिक लिंकेज के साथ एक नियमित कार्य होता है, अगर उन्हें स्थान पर परिभाषित किया जाता है, तो इसमें मामला), और यही वह है जिसे आप अलग-अलग हिस्सों से देख सकते हैं। चूंकि हमारे पास मशीन कोड में स्थैतिक स्थानीय चर के साथ दो कार्य हैं। भाषा/मानक उनके व्यवहार को कैसे योग्य बनाता है?
एमएस विजुअल स्टूडियो का उपयोग करते समय, आपको डीएलएल बनाने और काम करने के लिए डीएलएल का उपयोग करते समय सही '__declspec' का उपयोग करना होगा। –
हां, मुझे इसके लिए धन्यवाद पता है। – user14416
यदि प्रश्न वास्तव में डीएलएल सीमाओं में स्थिर चर के बारे में है तो शीर्षक में उल्लेख किया जाना चाहिए और टेक्स्ट –