นึกถึงปัญหาที่อาจเกิดขึ้นได้หากไม่มีการขึ้นบรรทัดใหม่ ตามมาตรฐาน ANSI #include
ของไฟล์ที่จุดเริ่มต้นแทรกไฟล์ตรงกับที่อยู่ด้านหน้าของไฟล์และไม่แทรกบรรทัดใหม่#include <foo.h>
หลังจากเนื้อหาของไฟล์ ดังนั้นถ้าคุณรวมถึงไฟล์ที่มีการขึ้นบรรทัดใหม่ไม่มีที่สิ้นสุดในการแยกวิเคราะห์ก็จะถูกมองว่าเป็นถ้าบรรทัดสุดท้ายของที่อยู่ในสายเดียวกันกับบรรทัดแรกของfoo.h
foo.cpp
เกิดอะไรขึ้นถ้าบรรทัดสุดท้ายของ foo.h เป็นความคิดเห็นที่ไม่มีบรรทัดใหม่ ตอนนี้บรรทัดแรกของfoo.cpp
ความเห็นออก เหล่านี้เป็นเพียงตัวอย่างของปัญหาที่สามารถคืบคลานขึ้นมาได้
แค่ต้องการชี้ผู้ที่สนใจให้ตอบคำถามของเจมส์ด้านล่าง ในขณะที่คำตอบข้างต้นยังคงถูกต้องสำหรับ C มาตรฐาน C ++ ใหม่ (C ++ 11) ได้รับการเปลี่ยนแปลงเพื่อไม่ให้มีการออกคำเตือนนี้อีกต่อไปหากใช้ C ++ และคอมไพเลอร์ที่สอดคล้องกับ C ++ 11
จากมาตรฐาน C ++ 11 ผ่านทางโพสต์ของ James:
ไฟล์ต้นฉบับที่ไม่ว่างเปล่าและไม่ได้ลงท้ายด้วยอักขระขึ้นบรรทัดใหม่หรือที่ลงท้ายด้วยอักขระขึ้นบรรทัดใหม่นำหน้าด้วยอักขระแบ็กสแลชในทันทีก่อนที่จะมีการประกบใด ๆ เกิดขึ้นราวกับว่ามีการเพิ่มใหม่ อักขระบรรทัดถูกผนวกเข้ากับไฟล์ (C ++ 11 §2.2 / 1)
cat
ไฟล์และไม่มี newline ต่อท้ายเนื่องจาก shell prompt ใหม่จะปรากฏขึ้นหลังจากบรรทัดสุดท้ายของไฟล์ (เช่นไม่ใช่ในคอลัมน์ 0)