Придумайте деякі проблеми, які можуть виникнути, якщо немає нового рядка. Відповідно до стандарту ANSI, #include
файл на початку вставляє файл точно так само, як на передній частині файлу, і не вставляє новий рядок після #include <foo.h>
вмісту файлу після. Отже, якщо ви включите файл без нового рядка в кінці до аналізатора, він буде розглядатись так, ніби останній рядок foo.h
знаходиться в тому ж рядку, що і перший рядок foo.cpp
. Що робити, якщо останній рядок foo.h був коментарем без нового рядка? Тепер перший рядок foo.cpp
коментується. Це лише кілька прикладів типів проблем, які можуть повстати.
Просто хотів вказати будь-яким зацікавленим сторонам на відповідь Джеймса нижче. Хоча вищезазначена відповідь все ще правильна для C, новий стандарт C ++ (C ++ 11) був змінений, так що це попередження більше не повинно видаватися, якщо використовується C ++ та компілятор, що відповідає C ++ 11.
З C ++ 11 стандартних через повідомлення Джеймса:
Вихідний файл, який не є порожнім і не закінчується символом нового рядка, або який закінчується символом нового рядка, що безпосередньо передує символу зворотної косої риски перед тим, як відбудеться таке сплайсування, обробляється так, ніби додатковий новий символьний рядок був доданий до файлу (C ++ 11 §2.2 / 1).
cat
файл, і він не має зворотного нового рядка, оскільки новий запит оболонки з’явиться після останнього рядка файлу (тобто не у стовпці 0)