Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Ошибка "unexpected end of file while looking for precompiled header directive"  (Прочитано 69393 раз)
0 Пользователей и 9 Гостей смотрят эту тему.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 09-04-2005 16:23 » 

Хотелось бы чтобы у людей не возникло путанницы, постараюсь описать вопрос как могу. Создается файл, (но не програмой, а мной) в котором я описываю свой класс. Этот файл появляется в инспекторе или в браузере (не знаю как правильно). Содержимое файла не содержит никаких ошибок (это 100%). Но при компиляции выдается ошибка "unexpected end of file while looking for precompiled header directive". При этом, если это файл удалить из инспектора/браузера, но оставить в папке с проектом и не удалять инклуды, то прграмма работает без проблем. Вопрос из-за чего возникает эта ошибка и как ее заглушить более цивилизованным способом
ЗЫ: Надеюсь нормально объяснил.
Записан

ещё один вопрос ...
xAL
Гость
« Ответ #1 : 09-04-2005 18:27 » 

Вот только что с этой проблемой сам разбирался - удалил в настройках проекта в "C/C++ -> Precompiled Headers" - поставил "no precomliled headers", больше не ругается Улыбаюсь

А вообще, полезно на ошибках жать F1, вот как студия объясняет эту ошибку:
An include file specified with /Yu is not listed in the source file.
Did you inadvertently delete a #include statement that referenced the .h file that /Yu is looking for?
или по русски: подключите (#include) в исходнике файл, на основе которого строятся procompiled headers... обычно это stdafx.h, если я все правильно понял (мог ошибиться, т.к. у себя отключил их куда подальше Улыбаюсь )
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 09-04-2005 18:40 » 

Цитата
подключите (#include) в исходнике файл, на основе которого строятся procompiled headers... обычно это stdafx.h, если я все правильно понял (мог ошибиться, т.к. у себя отключил их куда подальше  )
Попробую, о результате напишу.
Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 18-04-2005 15:08 » 

Попробовал, нихрена не получилось. До сих пор приходится подключать файл в workspace, а затем перед компиляцией его от туда удалять. Крайне неудобно Жаль, жду советы.
Записан

ещё один вопрос ...
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #4 : 18-04-2005 15:34 » 

nikedeforest, я не совсем понял проблемму. Ты не хочешь использовать прекомпилированные заголовки? или ты хочешь от ошибки избавится?

если 1. то отруби их использование. Просто немного увеличется время компиляции при изменнении отдельных компонент.

если 2. тебе необходим файл который используется в этом качестве обычно это stdafx.h - должно быть установлено в опциях проекта. Тогда в каждый .срр файл, который ты добавляешь к проекту необходимо добавить #include "stdafx.h"
Если ты это делаешь первый раз - придётся один раз всё основательно перекомпилировать. Зато потом дела пойдут быстрее.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 18-04-2005 16:59 » 

Джон, 2. Спасибо, помогло Улыбаюсь

Вопрос чисто из любопытства и повышения познаний.
Цитата
прекомпилированные заголовки
Это что такое? Может я это знаю под другим названием.
Записан

ещё один вопрос ...
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 19-04-2005 09:04 » 

precompiled header - позволяют увеличить скорость работы в режиме отладки. Особенно в больших проектах, когда имеется много одинаковых включений (include) в разных модулях. При активировании этой опции создаётся файл (.pch) в который компилируется весь код - поэтому на первом этапе это может длится дольше чем обычно. Зато потом, неизменённые модули не будут вообще компилироваться. При проектах в 500-600 файлов это существенно, т.к. рекомпилируются только отдельные "части" проекта, в которых произошли, или которые затронули, изменения.
Файл .pch можно удалить с целью экономии места например при архивировании, но при использовании проекта необходимо создать снова (rebuild all).
Ну как смог объяснил. Если что непонятно - спрашивай.
« Последнее редактирование: 19-04-2005 09:47 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 19-04-2005 12:44 » 

Я так понял это возможно использовать в не зависимости от того пишешь-ли с помощью МФЦ или на АПИ. Я прав? Как эту опцию активировать? (чисто из любопытства, т.к моим программулькам далек до 500 страниц Улыбаюсь)
Записан

ещё один вопрос ...
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 19-04-2005 15:17 » 

Да, от используемых библиотек это не зависит. Речь идёт о том где и какие откомпилированные модули хранятся, должны-ли они каждый раз заново создаваться (компилироваться) или  это не обязательно. Ещё раз подчеркну, функция полезна только при отладке. Если прога пишется на одном дыхании и сразу компилится в релизе.... ну эт я уже загнул Улыбаюсь Улыбаюсь Улыбаюсь

Про включение:
если проект создаётся в студии, то как правило precompiled header уже включен и делать ничего не надо.
в .NET: правой кнопкой по проекту -> Properties -> C/C++ -> Precompiled Headers

в 6-ой точно не напишу - у меня немецкая, посмотри - должно аналогично называться.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 19-04-2005 16:58 » 

Найти не нашел, но по ходу дела по умолчанию у меня эта опция запущена, т.к. файл .pch существует и весит немало.
У меня тут еще вопрос образовался (век живи век учись Улыбаюсь, а я еще свой вен не прожил Улыбаюсь).
Я добавил свой файл, вписал туда StdAfx.h и все нормаально стало компилиться, спасибо тебе. Но тут интересная штука образовалась. Кодга жмешь F7,ctrl+F7, F5, ctrl+F5, которые вызывают след. действя: build,compile, execute, execute with breakpoint, то все компилится или там билдится, все кроме моего файла, т.е. если я в него вношу какие-то изменеия, то это не вносит никакого эффекта, до тех пор пока не нажмешь Rebuild all. Тогда все ОК. Вопрос: ПОЧЕМУ ТАК? И еще как сделать, чтобы файл внесенный мною участвовал вол всех операциях сразу по умолчанию, а то я по привычке жму ctrl+F5, а реакции фига и приходится мышкой нажимать кнопку Rebuil all, неинтересно как-то
Записан

ещё один вопрос ...
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #10 : 19-04-2005 21:56 » 

Опиши по-подробнее, что за файл, как вставляется? Ну и попутно - какая система? какая студия? сервис пак?
Иногда (очень редко! в больших запарках) такие штуки наблюдались в 6-ой версии, когда изменнения не отслеживались системой и тогда действительно помогал Rebuild All. Это были замки студии, если не ошибаюсь - вылечивалось очередным СП. Но я уже года два с ней не работаю. Поэтому... увы... точно не помню. .NET этой детской болезнью левизны не страдает.
Поэтому, если у тебя небольшой тестовый проектик - можешь кинуть на мыло, так просто легче разобраться.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 20-04-2005 10:25 » 

Проект высылать пока,думаю, смысла нет, потому как он хоть компилится, но работает некорректно, т.е виснет, хотя если это неважно, то могу выслать. VC 6.0++, сервис паки я никакие не ставил, ОС ХР, файл вставляю так:
щелкаю правой кнопкой по папке в workspace и выбираю вставить файл .cpp, вот вроде и все.
Записан

ещё один вопрос ...
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #12 : 20-04-2005 11:13 » 

Поясняю...
При работе Студии всегда - особенно при использовании МФС используется установка директив из файла stdafx.h
Если хочешь добавить свой класс то делай с помощью Визарда, он сам умеет вставлять эти самые диррективы.
Если же сама апликация используется для отладки независимой библиотеки которая не обязательно будет использоваться в Виндовс, то тогда отключай флаг использования директив в проекте.

После чего можешь смело выкидывать stdafx.h из проекта, и все инклуды.

Сами директивы не дают ничего особенного...
Записан

А птичку нашу прошу не обижать!!!
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 20-04-2005 11:37 » 

Цитата
Если же сама апликация используется для отладки независимой библиотеки которая не обязательно будет использоваться в Виндовс, то тогда отключай флаг использования директив в проекте.

После чего можешь смело выкидывать stdafx.h из проекта, и все инклуды.
Не совсем понял или кажется совсем не понял, можно разжевать.
Где этот флаг находится?
Цитата
Выкинуть все инклуды
совсем все?
В данном случае я МФЦ не использую, пишу на АПИ.
Записан

ещё один вопрос ...
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #14 : 20-04-2005 12:00 » 

1. Flag -> Properties->Compile->Use precompiler header directives сменить на Not use precompiler header directives

В этом случае компилятор не будет подгружать директивы с файла stdafx.h

2. Поясняю...
Этот файл есть только у Винды. Если просто пишется библиотечка, в виде подгружаемого модуля который не должен зависить при сборке с основной программой от компилятора и платформы, то это надо отключать.
Если же ты просто пишешь программку под винду, просто создавай класс с помощью стандартного визарда студии - он тебе все подключит сам.


3. Это не важно - визард их генерит....
Записан

А птичку нашу прошу не обижать!!!
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 20-04-2005 12:07 » 

Все понял, единственное не нашел
Цитата
Flag -> Properties->Compile->Use precompiler header directives сменить на Not use precompiler header directives
Но я по лучше поищу.
А это точно избавит меня от Rebuild All?

Записан

ещё один вопрос ...
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #16 : 20-04-2005 12:33 » 

Rebuild All каким боком к этому привязано?Не понял
Это опция пересобрать все - уже готовое, даже без изменений.
При изменении конфигурации всегда стоит пересобрать...

Если работаешь с 6 версией студии то в меню Project Properties - вкладка Compiler

Записан

А птичку нашу прошу не обижать!!!
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 20-04-2005 12:58 » 

Цитата
Rebuild All каким боком к этому привязано?
Это привязано тем, что является моей текущей проблоемой. Я забыл уже с чего начиналась эта тема и подумал, что ты написал вышеизложенное к моему последнему вопросу, а не к первому. Извеняюсь, неувязочка вышла.
Записан

ещё один вопрос ...
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #18 : 20-04-2005 13:11 » 

Насчет перекомпиляции - куда и как ты включал файл - его надо включить в проект.
Записан

А птичку нашу прошу не обижать!!!
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 20-04-2005 13:50 » 

 Пишу как все было с точностью до милиметра. Project->Add To Project->New появляется окошко в котором я выбираю, что мне нужен файл *.cpp, вношу его имя. Файл появился в workspace (мужики, у вас workspace вопросов не вызывает, в смысле, может я один его так называю, хотя это так и называется) в папке Source Files. В этом файле, первой строкой написал #include "StdAfx.h". Сам этот файл подключается в файле где содержится winmain. Все. (если не считать, что я в этом файле пару функций написал и переменных). Больше ничего я не делал.
Записан

ещё один вопрос ...
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #20 : 20-04-2005 14:41 » 

всё хокей, я тоже его так назваю.
а где h файл к этому срр? Не можешь же ты просто так имплементацию вставить?
ты всё-таки проектик кинь на мыло. Мне не надо чтоб он работал, если компилится уже достаточно.
« Последнее редактирование: 20-04-2005 14:43 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #21 : 20-04-2005 15:20 » 

Да я ООП не использовал, поэтому и h не стал делать, ну короче кидаю проект.

* proj1ver2.rar (32.97 Кб - загружено 1176 раз.)
Записан

ещё один вопрос ...
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #22 : 20-04-2005 16:35 » 

На деле компиляция проходит, без build all другое дело, что функции типа static не отображаются в окне проекта в закладке Class View.

Убираешь статик - все работает как надо и все отображается...
Кстати - какого ты ставишь ф-ии статическими..Не понял Какой в этом твой сокровенный смысл???
Записан

А птичку нашу прошу не обижать!!!
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #23 : 20-04-2005 16:39 » 

Кстати - ты не очень правильно работаешь с объявлениями...
Цитата
proj1ver2.obj : error LNK2005: "long  xsr" (?xsr@@3JA) already defined in work.obj
proj1ver2.obj : error LNK2005: "long  ymin" (?ymin@@3JA) already defined in work.obj

Вот такая ошибка вылезает как только все объявляешь external...

Вопрос, почему отсутствует .h файл???
В нем надо объявить все глобальные функции... А все переменные сделать нормально глобальными без static и все заработает как надо...

Записан

А птичку нашу прошу не обижать!!!
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #24 : 20-04-2005 17:05 » 

Гром, молодец и СПАСИБО. Я эти static ставил как раз из-за этой ошибки.
Цитата
Какой в этом твой сокровенный смысл???
получается, ты сам ответил на этот вопрос.
А я думал, что типа все в одном файле сделаю, а оказывается, что так можно, но каряво.
Короче, я так понимаю, создаю файл .h, объявляю там глобальные переменные и функции и все будет ОК?

А теперь отклоняемся. У меня VC6.0++ не такой как у всех, он какой-то урезанный, я такой только у одного человека видел, у него в принципе и брал. Так вот, он немного отличается от стандартного. Отличия мелкие, в меню, интерфейсе, но в опред. случаях являются существенными. Я это к тому клоню, что не смог найти
Flag -> Properties->Compile->Use precompiler header directives и тут кто-то еще предлагал что-то типа C/C++->...
Ну не нашел. Поэтому пока не удается поэкспериментировать Жаль. Поиски продолжаются.
Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #25 : 20-04-2005 17:20 » 

НАШЕЛ!!! Простите за тупизм. Ну... теперь вся рыба наша Улыбаюсь. Гром, Джон СПАСИБО за помощь и участие.
Записан

ещё один вопрос ...
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #26 : 20-04-2005 18:39 » 

Переменные не надо, глобальные переменные должны быть просто в cpp файле и объявляться extern когда используются в других файлах иначе будут проблемы в работе с многократным инклудом неглядя на pragma once.
А вот все типы данных и прототипы функций надо объявлять в h файлах!!!!
Записан

А птичку нашу прошу не обижать!!!
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #27 : 20-04-2005 23:19 » new

Гром, тяжёлый и очень запущенный случай.

nikedeforest, придётся тебе за учебники браться, немного теорию учить придётся.
Метод тыка он конечно хорош, но только когда других не остаётся.  Ага
Ты раньше на чём программил?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #28 : 21-04-2005 09:38 » 

Дык на Си я программил, просто сколько учебников несмотрел, там не  любят углубляться в такие тонкости. Вот пример. Потребовалась мне функция с переменным числом формальных параметров (кстати в том проекте который я скинул). Я помнил как оформляется функция, на я не помнил, как обратиться к этим формальным параметрам. Просмотрел пару книг, в одной вообще об этом ни слова, в другой написано только как оформить функцию, а про обращение тоже ничего. Пришлось самому додумывать, как Джон сказал "метод научного тыка".
 А вообще, я ощущаю незнание языка. Я долго не хотел переходить на программирование под Виндовс, для того чтобы лучше ознакомиться с С/С++, но на втором курсе был вынужден перейти и не осталось времени, чтобы читать книги по С/С++, теперь свободное время идет на изучение программирования под Виндовс. Сначала был банальный метод научного тыка (кстати, что не говорите, действенный методд) но тут теперь путевых книг по этому делу накачал, изучаю потихоньку, эх времени бы свободного побольше.
ЗЫ: Вся надежда теперь на научный тык и на вас Улыбаюсь
Записан

ещё один вопрос ...
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #29 : 21-04-2005 11:42 » 

nikedeforest, тогда так. Есть две вещи:
1. программирование на С++ - не важно на какой платформе Win, nix, Mac - тут я тебе посоветую конечно же изобретателя - Страуструпа. Кто лучше папы про дитя расскажет?

2. Программирование под виндой - по большому счёту не важно на каком языке - тут выбор больше зависит от необходимой глубины и в некоторых случаях от конкретной версии (9х, НТ)
Можешь начать с Петцольда. Для 95 есть на русском. Ну и широкий выбор в нашей "библиотеке".
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines