में बनाए जाते हैं, तो मुझे पता है कि वैश्विक चर सभी संकलन इकाई के लिए घोषणा क्रम में बनाए जाते हैं और निर्माण संकलन एकाधिक संकलन इकाइयों के बीच परिभाषित नहीं किया जाता है।जब स्थिर वैश्विक चर C++
मैंने कुछ समय पहले पढ़ा है कि संकलन इकाई से किसी भी कोड से पहले वैश्विक चर बनाए जाते हैं जहां उन्हें परिभाषित किया जाता है। क्या यह मानक द्वारा परिभाषित किया गया है?
उदाहरण:
file1.cpp
int f1v1 = f1_1();
int f1v2 = f1_2();
void f1(){...}
int f1_1(){...}
int f1_2(){...}
file2.cpp
static int f2v1 = f2_1();
static int f2v2 = f2_2();
int f2_1(){...}
int f2_2(){...}
main.cpp
#include "file1.h"
#include "file2.h"
int main()
{
f1();
return 0;
}
इस मामले मानक की गारंटी में है कि f1_1()
f1_2()
से पहले और f1()
से पहले कहा जाता है? मानक द्वारा गारंटी दी जाती है कि f2_1()
और f2_2()
सभी को फ़ाइल 2.cpp में परिभाषित कोई फ़ंक्शन नहीं कहा जाता है और f2v1
और f2v2
फ़ाइल 2.cpp के बाहर दिखाई नहीं दे रहे हैं?
संपादित करें:
व्यवहार मानक द्वारा निर्दिष्ट जब file1.cpp lib1 में संकलित किया गया है और file2.cpp lib2 में संकलित किया गया है है?
आपको यह http://stackoverflow.com/questions/12321401/ मिल सकता है गतिशील-प्रारंभिक उपयोगी – hmjd
नोट: चाहे 'स्थिर' या केवल चर के * लिंक * को प्रभावित करता है, इसकी प्रारंभिक समान है। –
@MatthieuM। मैं इसे स्पष्ट करना चाहता था कि चर का उपयोग नहीं किया जाता है (अन्य स्थान से एक्सेस किया गया) – Felics