मैं पढ़ा है कि C89 चर लंबाई सरणियों का समर्थन नहीं करता है, लेकिन निम्न प्रयोग है कि खंडन लगता है:सी 8 9 में परिवर्तनीय-लंबाई सरणी?
#include <stdio.h>
int main()
{
int x;
printf("Enter a number: ");
scanf("%d", &x);
int a[x];
a[0] = 1;
// ...
return 0;
}
मैं इस तरह के रूप संकलन जब (यह मानते हुए फ़ाइल नाम va_test.c
है):
gcc va_test.c -std=c89 -o va_test
यह काम करता है ...
मुझे क्या याद आ रही है? :-)
मैं तुम्हें विश्वास नहीं है। '-std = c89' वैरिएबल घोषणाओं से पहले बयान को भी अस्वीकार करता है, जो आपके कोड में है, ताकि यदि आप वास्तव में' -std = c89' के साथ संकलित हो तो एक कंपाइलर त्रुटि उत्पन्न होती। डिफ़ॉल्ट '-std = gnu90' है जो vlas और C89/C90 भाषा में कई अन्य एक्सटेंशन का समर्थन करता है। –
@ आर। जीसीसी 4.3.4 (जो मेरे पास है) वेरिएबल्स से खुश हैं, लेकिन उन्हें '//' टिप्पणियां पसंद नहीं हैं। यह मेरे लिए पूरी तरह से स्पष्ट नहीं है कि क्या '// ...' प्रश्नकर्ता के असली कोड से शब्दशः है, या एक elision के रूप में इरादा है। मैंने बाद वाले को सोचा होगा। –
विषम। मुझे लगता है कि यह जीसीसी संस्करणों के बीच बदलता है और मैंने थोड़ी देर के लिए कोशिश नहीं की है। –