मैं विजुअल स्टूडियो 2010 में सी लिख रहा हूं। कंपाइलर मुझे इनलाइन वैरिएबल घोषणाओं का उपयोग नहीं करना चाहता है। निम्नलिखित कोड एक त्रुटि पैदा करता है:माइक्रोसॉफ्ट सी कंपाइलर: इनलाइन परिवर्तनीय घोषणा?
unsigned int fibonacci_iterative(unsigned int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
unsigned int prev_prev = 0; // error
unsigned int prev = 1; // error
unsigned int next = 0; // error
for (int term_number = 0; term_number < n; term_number++) {
unsigned int temp = prev_prev + prev;
prev = next;
prev_prev = prev;
next = temp;
}
return next;
}
त्रुटि:
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
हो रहा क्यों है? क्या संकलक को इतना सख्त बनाने की कोई सेटिंग नहीं है?
हालांकि थोड़ा गन्दा है, है ना? उन सभी फ़ंक्शन जो उन चरों को संदर्भित करते हैं उन्हें ब्लॉक के अंदर होना होगा ताकि वेरिएबल गुंजाइश से बाहर न जाएं। अगर अधिक उपयोग किया जाता है, तो यह _very_ गन्दा और ब्रेस-भारी कोड का कारण बन जाएगा। –
@Chinmay: यह निर्भर करता है। हाँ, यह बड़े ब्लॉक के लिए गन्दा हो सकता है, लेकिन यह छोटे ब्लॉक के लिए भी उपयोगी हो सकता है जहां कुछ चरों को केवल एक सीमित सीमित क्षेत्र की आवश्यकता होती है। – jamesdlin
वह पोर्टेबल कितना है? ऐसा लगता है कि यह परेशानी के लिए पूछ रहा है। –