К чему бы это?(непонятный warning)

rfgbnfy

если в конце нет пустой строки - вываливается warning
[devel c]# make
g++ -c -o test.o test.c
test.c:37:1: warning: no newline at end of file
g++ test.o -o test
Чё это он ? Откуда такие требования - в конце пустую строчку ставить?

rfgbnfy

PS Киньте в меня плз ссылкой где написанно что там должна быть пустая строка...........
PSS Sorry за ламерство.........

tucha96

okunek

I won't use Google before asking dumb questions.I won't use Google before
asking dumb questions.I won't use Google before asking dumb questions.
I won't use Google before asking dumb questions.I won't use Google before
asking dumb questions.I won't use Google before asking dumb questions.
I won't use Google before asking dumb questions.I won't use Google before
asking dumb questions.I won't use Google before asking dumb questions.
I won't use Google before asking dumb questions.I won't use Google before
asking dumb questions.I won't use Google before asking dumb questions.
I won't use Google before asking dumb questions.I won't use Google before
asking dumb questions.I won't use Google before asking dumb questions.

Chupa

Это не тоже самое, что пустая строка в конце файла.
Символ конца строки считается принадлежащим самой строке.
Обычно все редакторы его ставят, поэтому если его нет, существует вероятность того, что файл битый.
ИМХО, так.

tucha96

Так и делай, если тебе нравится быть тупицей.

rfgbnfy

А более подробную ссылку можно ? А то такая ссылка очень уж обобщённо........ Я не настолько хорошо знаю английский чтоб просеять столько инфы ........... То есть о том как отключать и о том что она желательна - я прочитал уже . Но зачем именно она нужна?

sergei1969

специально для тебя, Глеб:

freezer

это нельзя понять, это надо запомнить
если хочешь чтобы гнусь 3.x не выдавала ворнингов, а гнусь 2.x - ерроров, то файл надо заканчивать пустой строкой. Ибо так сказано в стандарте Ц++. Причем, это касается не только *.cpp, но и *.h Для мелкомягких и интеловских Сей это не принципиально.

rfgbnfy

Ибо так сказано в стандарте Ц++.
Именно это я и хочу увидеть - кинь в меня плз ссылкой на это..................

Dasar

http://www.kuzbass.ru/docs/isocpp/lex.html#lex.phases
2.1.2
If a source file that is not empty
does not end in a new-line character, or ends in a new-line char-
acter immediately preceded by a backslash character, the behavior
is undefined.

zima200572

КУЗБАСС.РУ? вау, я и не знал, что у меня такие рюхающие в программизме земляки

rfgbnfy

thnks - завтра посмотрю ...............

tucha96

Не очень понимаю, при чём тут я.

sergei1969

а ты подумай
иногда можно

tokuchu

> Символ конца строки считается принадлежащим самой строке.
Такого символа конца строки нет. Есть '\n' который обозначает начало новой строки и, как следствие, конец текущей.

rfgbnfy

ещё бы понять для чего всё так хитро устроенно...............

Chupa

>> Символ конца строки считается принадлежащим самой строке.
> Такого символа конца строки нет. Есть '\n' который обозначает начало новой строки и, как следствие, конец текущей.
Можно ещё сказать, что '\n' - разделитель строк, а не конец и не начало, и строить следствия.
Разница в том, что моё определение объясняет наличие такого символа в конце файла, а также отсутствие в этом случае дополнительной пустой строки.
Многие проги, обрабатывающие текст (wc -l, например работают именно с таким определением символа '\n'.

Dasar

По идее, чтобы избежать проблем, связанные с препроцессорными директивами и однострочными комментариями.
a.h
//bla-bla конца строки нет
a.cpp
#include "a.h"
void main {printf("Hello, World!";}
Если мы просто подставим файл a.h на место #include, то получим:
//bla-bla конца строки нетvoid main {printf ("Hello, World!";}
А не то, что мы хотели.
ps
данная фича, как большинство и других хитрых фич C++, вызвана теми временами, когда компьютеры были большими, а памяти было мало. А программы уже тогда хотелось компилировать большие.
Оставить комментарий
Имя или ник:
Комментарий: