कुछ समस्याओं के बारे में सोचें, जो कोई नई रेखा न होने पर हो सकती हैं। एएनएसआई मानक के अनुसार #include
शुरुआत में किसी फाइल का फाइल ठीक उसी तरह से फाइल को सम्मिलित करता है जैसे वह फाइल के सामने होता है और फाइल #include <foo.h>
की सामग्री के बाद नई लाइन नहीं डालता है । इसलिए यदि आप पार्सर के अंत में कोई नई पंक्ति के साथ कोई फ़ाइल शामिल करते हैं तो इसे देखा जाएगा जैसे कि अंतिम पंक्ति foo.h
पहली पंक्ति के समान लाइन पर है foo.cpp
। क्या होगा अगर foo.h की अंतिम पंक्ति एक नई लाइन के बिना एक टिप्पणी थी? अब foo.cpp
टिप्पणी की पहली पंक्ति है। ये समस्याओं के प्रकारों के उदाहरण हैं, जो रेंग सकते हैं।
बस नीचे जेम्स के जवाब के लिए किसी भी इच्छुक पार्टियों को इंगित करना चाहता था। हालांकि, C के लिए उपरोक्त उत्तर अभी भी सही है, नए C ++ मानक (C ++ 11) को बदल दिया गया है, ताकि C ++ 11 के अनुरूप और C कंपाइलर का उपयोग करते समय यह चेतावनी जारी न की जाए।
जेम्स पोस्ट के माध्यम से C ++ 11 मानक से:
एक स्रोत फ़ाइल जो खाली नहीं है और जो एक नई-पंक्ति वर्ण में समाप्त नहीं होती है, या जो एक नए पंक्ति-वर्ण में समाप्त होती है, ऐसे किसी भी splicing के होने से पहले एक backslash वर्ण से पहले तुरंत समाप्त हो जाएगी, जैसे कि एक अतिरिक्त नया- फ़ाइल में लाइन वर्ण जोड़ा गया (C ++ 11 .22.2 / 1)।
cat
एक फाइल करते हैं और इसमें एक अनुगामी न्यूलाइन नहीं है क्योंकि नया शेल प्रॉम्प्ट फाइल की अंतिम पंक्ति (यानी कॉलम 0 में नहीं) के बाद दिखाई देगा