LINUX.ORG.RU

Как получить «warning:no newline at end of file»?

 ,


0

1

Обнаружил, что в дебиановском gcc (точнее, в cpp) 4.4 и 4.6 этого предупреждения уже нет, и никакие -Wall -Wextra его не включают. В собранном вручную 4.7 тоже нет.

Все три версии ругаются на -Weof-newline, упомянутый в http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14331.

В версии 4.2 cpp исправно ругается на.

UPD: A source file that is not empty shall end in a new-line character (C99 draft), речь не про плюсы.

★★★★★

сделать хидер (.h) без \n в последней строке, соответсвенно включить его в .c и компилять старой версией gcc. (или с указанием старого стандарта)

инструкция препроцессора #include «чё-то там» заменяет ВСЮ строку, включая прежний \n на содержимое файла «чё-то там». Если не ставить \n можно в старых компиляторах наступить на эпичные грабли.

В новом стандарте (очевидно и в новых версиях компиляторов) #include обрабатывается чуть по другому, поэтому опаньки :)

MKuznetsov ★★★★★ ()
Ответ на: комментарий от LamerOk

Спасибо, и почему я этого не нашёл сразу (

sv75 ★★★★★ ()

Кстати, моё имхо, -Werror это зло. Хотя бы потому что я 100500 раз наблюдал как при агрейде gcc старый код часто начинает сыпать ворнингами и это ломает сборку нафиг.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Кстати, моё имхо, -Werror это зло

Лорчую. Особенно когда его насильно включают упоротые авторы разных говноподелий, потому что на их машинах оно собирается нормально.

buddhist ★★★★★ ()
Ответ на: комментарий от true_admin

facepalm.h

Кстати, моё имхо, -Werror это зло. Хотя бы потому что я 100500 раз наблюдал как при агрейде gcc старый код часто начинает сыпать ворнингами и это ломает сборку нафиг.

-Werror нужен, чтобы на девелоперской машине ловить ворнинги, а не чтобы его в Makefile релизных сорцов запиливать.

geekless ★★ ()
Ответ на: комментарий от true_admin

Кстати, моё имхо, -Werror это зло

Я пособие пишу, мне критично.

sv75 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.