зачем новая строка в конце файлов?

Тема в разделе "LANGS.C", создана пользователем cupuyc, 10 янв 2010.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    как начал работать с гсс заметил такую "странность": если в конце файла не стоит новая строка, то компилятор выдаёт предупреждение. под VC такого нет. что за предупреждение и какой от него толк? подумаешь - не поставил ентер..?
     
  2. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    gcc следует стандарту
     
  3. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    вернее - оба компилятора следуют стандарту
     
  4. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    стандарт - очень хорошо, только не понятно: зачем? должна же быть причина. не думаю, что для парсера столь большая разница какой файл обрабатывать. обработать символ перевода строки - ничто по сравнению со сложностью обработки синтаксиса.
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    раньше это надо было принтерам, чтоб каретка возвращалась
     
  6. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    А Борланд новую строку сам молча вставляет :) Иногда это бывает достаточно неудобно :dntknw:
     
  7. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    RedLord

    Ох*еть...
     
  9. Dukales

    Dukales New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2009
    Сообщения:
    199
    можно предположить, что это связано со средствами ввода, которые существовали давно (типа перфокарт может быть), где выделенной файловой системы не было и где явно нужно было указывать конец файла (в те времена вряд ли с целью форматирования текста оставляли "пустую строку", экономили каждый бит). вот, например, при построчном вводе с терминала самое простое, что можно придумать для указания конца ввода — это пустая строка. в строчном текстовом редакторе ed единственная точка во всей строке — символ окончания ввода.
     
  10. Dukales

    Dukales New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2009
    Сообщения:
    199
    не ну были же ещё магнитные ленты. там тоже, думаю, надо определять положение конца файла "на месте" (не отходя от кассы). мы ведь не сможем перематывать всё время, чтобы считать оглавление, а оперативку тратить на него — накладно.
     
  11. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    вобщем результат топика - it's facking magic!
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Вставлю и я свои 5 коп. Возможно для более эффективного парсинга. Если мы точно знаем последний символ в файле, то выход за его пределы можно проверять только после этого символа. Вставка символа в конце до парсинга это не очень оптимально. Возможно существуют какие-то системы/парсеры, где это актуально.
     
  13. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    такой ещё вопросик. а зачем вообще нужен символ перевода каретки в Си/Си++. разве нельзя написать всю программу в одну строку? ну, за исключением разве что директив препроцессора. я это не для практических целей спрашиваю. может быть все директивы препроцессора должны заканчиваться символом перевода строки, а в инклудах, как правило, именно так и происходит. из этого следствие: чтобы препроцессор корректно разобрал последнее #endif и нужен этот перевод?
     
  14. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    и т.д.
    вообщем - читаем стандарт
     
  15. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    к чему это?
     
  16. RedLord

    RedLord Member

    Публикаций:
    0
    Регистрация:
    23 июн 2005
    Сообщения:
    183
    Адрес:
    Ukraine
    maksim_
    к этому