मैं इस कोड था:मैं एक स्थिर वैरिएबल वैल्यू के साथ स्थिर वैरिएबल क्यों शुरू नहीं कर सकता?
int foo(void){
return 1;
}
int main(void){
static const int x = foo();
//do stuff
return 0;
}
लेकिन मैं एक गैर स्थिरांक मान के साथ एक स्थिर चर आरंभ के बारे में त्रुटि मिला है। मैंने सोचा कि इसके पास कॉन्स विनिर्देशक के साथ कुछ करना था, लेकिन ऐसा नहीं हुआ। अब
int foo(void){
return 1;
}
int main(void){
static int x = 0;
if (x == 0) x = foo();
//do stuff
return 0;
}
, क्यों संकलक बस जब तक यह प्रयोग किया जाता है static int x
चर के प्रारंभ में देरी नहीं कर सकते हैं, और अधिक महत्वपूर्ण बात, क्यों यह सिर्फ में रख नहीं कर सकते हैं: मैं स्थिरांक कीवर्ड छोड़ने और यह कर समाप्त हो गया एक पठन-लिखने वाला अनुभाग, और केवल यह लागू करें कि यह संकलन समय में लिखा नहीं गया है? मैं अपने कोड में बेहतर अर्थशास्त्र के लिए const
और static
कीवर्ड का उपयोग करना चाहता हूं, लेकिन मुझे वास्तव में परवाह नहीं है कि संकलक इसे कैसे संभालता है, बस इसे काम करने दें।
क्या सी मानक की मेरी समझ गलत है? या मेरा संकलक चूस रहा है? यह एमएसवीसी 9.0 है।
मुख्य अच्छे में स्थिर चर क्या है? – tchap
'x' आपके उदाहरण के संदर्भ में स्थानीय चर की तरह दिखता है। आप यह स्थिर क्यों होना चाहते हैं? –
@ वालक्कपडेडी: अक्सर इस तथ्य के कारण कि आपको उस कार्य के लिए प्रत्येक कॉल के लिए इसे पुन: प्रारंभ करने की आवश्यकता नहीं है। –