Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > includes |
Автор: sol78 30.4.2008, 17:18 | ||
сколько времени работаю в MS 6 ни как не могу понять как и почему нужно использовать стандартные библиотеки, а именно их вклучения Вот наример: Я хочу использовать и библиотеку string & iostream я пишу так:
вылетает на компиляции RTOC.CPP X.CPP d:\microsoft visual studio\vc98\include\iosfwd(145) : error C2143: syntax error : missing ';' before '=' d:\microsoft visual studio\vc98\include\iosfwd(147) : error C2059: syntax error : '==' d:\microsoft visual studio\vc98\include\iosfwd(149) : error C2059: syntax error : '<' d:\microsoft visual studio\vc98\include\iosfwd(169) : error C2059: syntax error : '==' откуда этот include \ iosfwd - я его не делала, интересное дело отлично компелириется в MS 2005 Что делать? И так вооще в этом разобраться??? |
Автор: vinter 30.4.2008, 17:25 |
namespace правда в 6 вижуале не поддерживается стандарт и нет namespace'ов |
Автор: MAKCim 30.4.2008, 17:28 | ||
|
Автор: sol78 30.4.2008, 17:38 | ||
извините за опечатку д/б
вопрос остался! Добавлено через 2 минуты и 7 секунд vinter, так я в визуале 6 и работаю, как быть? |
Автор: vinter 30.4.2008, 18:21 | ||
меняй компилятор ![]()
как там обозвали string я не знаю |
Автор: sol78 30.4.2008, 20:58 |
не помогло, колличество ошибок увеличелось в 2 раза((( Хелп! кто то еще пишет в MVS 6???? |
Автор: d06osipov 1.5.2008, 07:45 |
Приведи код который до #include <iostream> в X.CPP. Из-за него могут быть какие угодно ошибки во вклбючаемых файлах. |
Автор: sol78 10.5.2008, 20:05 | ||
d06osipov, незнаю поможет ли
|
Автор: vinter 10.5.2008, 20:38 |
#include <iostream.h> |
Автор: sol78 10.5.2008, 21:33 |
vinter, не пологло колличество ошибок увеличелось до 57 ![]() |
Автор: bronislav 10.5.2008, 22:46 |
А весь код выложить слабо? Только атачем пожалуйста. |
Автор: Ln78 11.5.2008, 13:32 | ||||
sol78, сейчас в один из файлов в проекте для VS6 включил
без всяких дополнительных расширений, для верности дописав в одной из функций
оттранслировалось без единого замечания. Вероятно, причина в чём-то другом, возможно, в #include "Registration.h" |
Автор: sol78 11.5.2008, 21:19 |
ок выкладываю все, т.к. потеряла всякую надежду((( |
Автор: Fazil6 11.5.2008, 21:38 | ||
чивоооо??? код я не скачивал и не смотрел но есть подозрение, что это
написано в хедере, что является источником вот таких ошибок. По коду всегда должно быть так, что после using namespace не должно быть никаких инклудов так как он будет и на код этих инклудов влиять. Вообще что за мода юзать using namespace ? Неужели так сложно набрать std:: ? |
Автор: vinter 11.5.2008, 23:44 | ||
![]() |
Автор: Earnest 12.5.2008, 09:06 |
Стандарт действительно поддерживается не полностью, но namespace точно есть. |
Автор: sol78 12.5.2008, 09:42 |
прошу вас по делу, господа, почему код не компилится? |
Автор: vinter 12.5.2008, 09:54 |
извиняюсь что неточно выразился, ничего в std неймспейс не обернуто, т.е при подключениии iostream не надо using делать. |
Автор: Lazin 12.5.2008, 09:59 | ||||
код скачал - так и есть, написано это в хэдэре, весь код смотреть не стал, так как там куча каких-то диких макросов, нечитабельно, по крайней мере за разумное время ![]() |
Автор: Fazil6 12.5.2008, 10:15 | ||
1. Убрать из хедера using . Ошибка не от этого, но по любому это очень плохо и дальше вылезет. 2. Вообще-то имена, которые начинаются с подчеркивания по стандарту очень сильно нерекомендуются. А еслри это еще к тому же макрос
то пеняй на себя. Короче в X.h определен такой макрос и поэтому имеешь, то что имеешь |
Автор: Ln78 12.5.2008, 13:20 |
sol78, во вложении несколько подкорректированный код, который компилируется под 6-ю студию. |
Автор: just_geek 12.5.2008, 13:33 | ||
Не исправляли, стандарт более менее вменяемо стал поддерживатся только в 7.1, Стандарт был принят в 98 году, и визуал вышел в 98 году, только на полгода раньше чем стандарт. |
Автор: sol78 14.5.2008, 21:55 |
Ln78, он не компелируется!!!!!!!!! Помогите!!!!!!!!!!!!!!!!! ![]() Добавлено через 5 минут и 2 секунды Все теже 4 ошибки: Compiling... X.CPP d:\microsoft visual studio\vc98\include\iosfwd(145) : error C2143: syntax error : missing ';' before '=' d:\microsoft visual studio\vc98\include\iosfwd(147) : error C2059: syntax error : '==' d:\microsoft visual studio\vc98\include\iosfwd(149) : error C2059: syntax error : '<' d:\microsoft visual studio\vc98\include\iosfwd(169) : error C2059: syntax error : '==' Error executing cl.exe. |
Автор: Ln78 15.5.2008, 05:58 | ||||
Как не компилируется? У меня всё скомпилировалось: я и перед тем, как поместить сюда проверил, сейчас скачал именно этот архив ещё раз и проверил, всё без ошибок и замечаний. Проверял на 6-й студии, т.е. использовал RTOC.dsw и RTOC.dsp. Вы "Rebuild All" делать пробовали? Указанные ошибки были когда в X.h было:
После замены на
у меня ошибки пропали. Попробуйте вместо _CLASS_X написать что-нибудь подлиннее и уникальнее |
Автор: dizzy1984 15.5.2008, 07:18 | ||||||||||||||||||||
Вот код из замечательного файла iosfwd
Он включается в rtoc.h посредством строки
В свою очередь, rtoc.h, не будучи глупым хидером, включается в x.h, включенный в начале файла x.cpp
Интересный момент заключается здесь в препроцессорной директиве, расположенной в начале файла x.h. Это
Теперь переведем свой взор на код в начале этого поста. Что же будет с этим кодом если он попадет под действие макроса #define _X? Давайте проверим. Компилируем файл x.cpp с включенной директивой /P (генерация исходного текста после препроцессора). Посмотрите только как упростилась наша шаблонная специализация!
Теперь можно осмыслить сказанное компилятором предложение
Хотя раньше, показанное на неизуродованном теле iosfwd, оно могло вызывать лишь удивление. Мораль заключается в том, что короткие имена макросов в плане разрушительности можно сравнить с ОМП и пользоваться ими, пожалуй, не стоит вовсе. Немного еще по теме... Посты vinter,а меня озадачили
и
На сколько я знаяю, существует 2 стандарта c++ - 98 и 2003 годов. А 98 студия была доделана в 97-году, но по коммерческим причинам поступила в продажи в 98-м. Так что стандарту она не соответствует, но довольно близка к нему и несомненно там есть и iostream и string и чего только нет. Подозреваю, что ей пользуются до сих пор и довольно успешно...
Снова AFAIK в случе отсутствия объявления какого-то namespace, using namespace <имя> просто не даст никакого эффекта, т.е будет безвредна. Ну и теперь призы. Первый приз выигрывает Fazil6, он даже без кода угадал проблему. Второй приз идет Ln78, он исправил текст. Дай угадаю - ты компилируешь свой неисправленный вариант? Кстати,
у меня вопрос. Под именами что подразумевается? Так, ну я бы еще пописал, но чуствую что наверно хватит. |