यदि मेरे पास एक स्थैतिक स्थानीय चर या थ्रेड_लोकल स्थानीय चर है जो कि अंतिम अनुवाद इकाइयों में परिभाषित एक इनलाइन फ़ंक्शन के भीतर है, तो अंतिम प्रोग्राम में वे मानक के समान पते के लिए गारंटी देते हैं?इनलाइन फ़ंक्शंस के स्थानीय स्थिर/थ्रेड_लोकल चर?
// TU1:
inline int* f() { static int x; return &x; }
extern int* a;
void sa() { a = f(); }
// TU2:
inline int* f() { static int x; return &x; }
extern int* b;
void sb() { b = f(); }
// TU3:
int *a, *b;
void sa();
void sb();
int main() { sa(); sb(); return a == b; }
उपरोक्त हमेशा 1 लौटाएंगे?
धन्यवाद, और मुझे लगता है कि 'thread_local' केस का एक समान जवाब है? –
@AndrewTomazos: हाँ, मुझे ऐसा लगता है, क्योंकि [dcl.stc]/4 द्वारा, 'thread_local' विनिर्देशक 'स्थिर' विनिर्देशक का तात्पर्य है, और उत्तर में उद्धृत नियम * विनिर्देशक * पर लागू होता है, भंडारण नहीं कक्षा। –