सी एक स्वतंत्र रूप है भाषा है। इसका मतलब है कि आप इसे कई तरीकों से प्रारूपित कर सकते हैं और यह अभी भी एक कानूनी कार्यक्रम होगा।
उदाहरण के लिए एक बयान की तरह
a = b * c;
की तरह लिखा जा सकता है
a=b*c;
या पसंद है
a
=
b
*
c
;
तो जब संकलक लाइनों को देखते हैं
temp = *a
*a = *b;
यह सोचता है कि इसका मतलब है
temp = *a * a = *b;
यह निश्चित रूप से एक मान्य अभिव्यक्ति नहीं है और संकलक लापता अर्धविराम के बजाय इसके बारे में शिकायत करेगा। इसका कारण यह मान्य नहीं है क्योंकि a
एक संरचना के लिए एक सूचक है, इसलिए *a * a
एक संरचना उदाहरण को गुणा करने की कोशिश कर रहा है (*a
एक सूचक ) के साथ एक )a
।
जबकि कंपाइलर लापता अर्धविराम का पता नहीं लगा सकता है, यह गलत लाइन पर पूरी तरह से असंबंधित त्रुटि की भी रिपोर्ट करता है। यह नोटिस करना महत्वपूर्ण है क्योंकि आप जिस लाइन पर त्रुटि की सूचना देते हैं, वहां कोई भी चीज नहीं है, वहां कोई त्रुटि नहीं है। कभी-कभी इस तरह की समस्याओं को आपको पहले देखने की आवश्यकता होगी लाइनों को देखने की कि क्या वे ठीक हैं और बिना त्रुटियों के हैं।
कभी-कभी आपको त्रुटि खोजने के लिए किसी अन्य फ़ाइल में भी देखना होगा। उदाहरण के लिए यदि हेडर फ़ाइल एक संरचना को परिभाषित कर रही है, जिसे वह हेडर फ़ाइल में अंतिम करता है, और संरचना समाप्त करने वाला अर्धविराम गायब है, तो त्रुटि हेडर फ़ाइल में नहीं होगी बल्कि उस फ़ाइल में हैडर फ़ाइल शामिल है।
और कभी-कभी यह और भी बदतर हो जाता है: यदि आप दो (या अधिक) हेडर फ़ाइलों को शामिल करते हैं, और पहले वाले में एक अधूरा घोषणा शामिल है, तो संभवत: सिंटैक्स त्रुटि दूसरी हेडर फ़ाइल में इंगित की जाएगी।
इससे संबंधित फॉलो-अप त्रुटियों की अवधारणा है । आम तौर पर लापता अर्धविराम के कारण कुछ त्रुटियां, कई त्रुटियों के रूप में रिपोर्ट की जाती हैं। यही कारण है कि त्रुटियों को ठीक करते समय ऊपर से शुरू करना महत्वपूर्ण है, क्योंकि पहली त्रुटि को ठीक करने से कई त्रुटियां गायब हो सकती हैं।
इस कोर्स से एक बार में एक त्रुटि को ठीक किया जा सकता है और बार-बार recompiles जो बड़ी परियोजनाओं के साथ बोझिल हो सकते हैं। इस तरह की फॉलो-अप त्रुटियों को पहचानना कुछ ऐसा है जो अनुभव के साथ आता है, और उन्हें देखने के बाद कुछ बार वास्तविक त्रुटियों को खोदना और एक से अधिक त्रुटियों को ठीक करना आसान होता है।