Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Выбор компилятора для C++

Автор: BAZIL
Дата сообщения: 26.04.2003 12:41
Купил книжку "Как программировать на C++", автор Дейтл, 3-е издание 2001 год. Попробывал накатать первый листинг:
Цитата:
#include <iostream>

int main()
{

std::cout << "Welcome to C++\n";
return 0;

}

и скомпилировать его на компиляторе Borland C++ 3.1... он выдал ошибку... вроде бы код написан правильно...
Вопрос: каким компилятором можно воспользоваться, чтобы успешно справиться с этой задачей?
Автор: FuzzyLogic
Дата сообщения: 26.04.2003 16:13
На варезнике djelektronik постил ссылочку, на мой взгляд незаменимую для данного форума.

http://openxs.net/articles/smart-questions-ru.html

BAZIL
Ошибку-то напиши а то так вообще ничего не понятно.
Автор: BAZIL
Дата сообщения: 26.04.2003 16:50
FuzzyLogic

Цитата:
Errors:
1: Unable to open include file 'IOSTREAM'
6: Type qualifier 'std' must be a structure or class name
6: Statement missing ;
Автор: SSergeaA
Дата сообщения: 26.04.2003 16:58
BAZIL


Цитата:
1: Unable to open include file 'IOSTREAM'

зможно я глючу, но я слышал о таких C++ компиляторах, что надо писать
#include <iostream.h>


Добавлено
Хммм, оказывается я не глючу, например Visual С++ требует указания ".h"

Добавлено
Кстати, попробуй переписать вот так
#include <iostream.h>
using namespace std;
int main()
{

cout << "Welcome to C++\n";
return 0;

}
Автор: BAZIL
Дата сообщения: 26.04.2003 17:19

Цитата:
#include <iostream.h>  
using namespace std;
int main()  
{  
 
cout << "Welcome to C++\n";  
return 0;  
 
}


Declaration syntax error
Declaration terminated incorrectly


Цитата:
Хммм, оказывается я не глючу, например Visual С++ требует указания ".h"

То есть все компиляторы для С++ требуют написания .h? тогда почему же в книженции написано именно <iostream>...? причёи во всех листингах... видимо мне нужен другой компилятор... вот только какой?
Автор: SSergeaA
Дата сообщения: 26.04.2003 17:40
BAZIL


Цитата:
То есть все компиляторы для С++ требуют написания .h? тогда почему же в книженции написано именно <iostream>...? причёи во всех листингах... видимо мне нужен другой компилятор... вот только какой?

Не, не так. Некоторые компиляторы требуют .h. Я тут нашел книжку "Язык программирования С++" Страуструпа и .h не указывается. Так что эти глюки имхо наверное прихоть компилятора Borland C++(можно посмотреть экзамплы к нему).

А насчет компилятора сейчас поисчу.

ЗЫ Если найдешь решение поделись пожалуйста.



Добавлено
Вообщем скачал компилятор BCC с сайта Borlanda он халявный в секции Downloads
8.7 mb. Стал компилить твою прогу и те же ошибки. Посмотрел help там написано, что в папке bin компилятора нужно создать файлы конфигурации.
Вот выдержка.

Цитата:
From the bin directory of your installation:
a. Add "c:\Borland\Bcc55"
to the existing path
b. Create a bcc32.cfg file which will set
the compiler options for the Include
and Lib paths (-I and -L switches to
compiler) by adding these lines:
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. Create an ilink32.cfg file which will set
the linker option for the Lib path by
adding this line:
-L"c:\Borland\Bcc55\lib"


В любом случае напиши пожалуйста о результатах, а то интересно ведь.
Автор: BAZIL
Дата сообщения: 26.04.2003 20:05
SSergeaA
Уф... наконец-то начал закачку C++ Compiler'a... пока зарегился + инет тормозил по-страшному... щас закачаю и отпишусь тут...

Добавлено
Так, насколько я понял нужно создать в директории X:\Borland\Bcc55 файлы bcc32.cfg (с содержанием -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib") и ilink32.cfg (-L"c:\Borland\Bcc55\lib")... создал... теже ошибки... или я что-то не так делаю? %)
Автор: FuzzyLogic
Дата сообщения: 26.04.2003 23:23
У тебя компилятор просто не находит файлы заголовков. Кстати большинство компиляторов любят .h а без него страшно будут ругаться. Почему в книжке без .h - посмотри каким компилятором пользуются в книге (в начале должно быть сказано) скорее всего для того компилятора это допустимый вариант.
Ты компилишь с командной строки? Те же параметры (-L, -I) можно передавать компилятору в командной строке. Сходи к себе в папку x:/bcc55/include и убедись что там есть файл iostream.h (тот самый заголовок что ты пытаешься использовать) и передавай путь в котором лежит iostream.h при помощи параметра -I"path". Если ты хочешь иметь настройки в .cfg файлах, убедись в том что место где они лежат добавлено в $PATH (либо просто положи в c:\windows или что-нить вроде, для начала).
И компили такой текст:

#include <iostream.h>
int main()
{
cout << "Welcome to C++\n";
return 0;
}

должно всё пройти нормально
Автор: BAZIL
Дата сообщения: 27.04.2003 12:05

Цитата:
У тебя компилятор просто не находит файлы заголовков.

Это я понял

Цитата:
Кстати большинство компиляторов любят .h а без него страшно будут ругаться.

Заметил...

Цитата:
Почему в книжке без .h  - посмотри каким компилятором пользуются в книге (в начале должно быть сказано) скорее всего для того компилятора это допустимый вариант.

Перерыл всё начало... ничего нет... даже упоминания о компиляторе нет

Цитата:
Ты компилишь с командной строки?

С неё самой...

Цитата:
Сходи к себе в папку x:/bcc55/include и убедись что там есть файл iostream.h

Лежит, с кучей других заголовков...

Цитата:
Если ты хочешь иметь настройки в .cfg файлах, убедись в том что место где они лежат добавлено в $PATH

$PATH - это где должен быть? переменная среды что ли?

Цитата:
И компили такой текст:
 
#include <iostream.h>    
int main()    
{
cout << "Welcome to C++\n";    
return 0;      
}  
 
должно всё пройти нормально

Такой текст нормально компилится и в Borland'e 3.1... мне хочется узнать, что за компилятор нужно юзать, чтобы откомпилить без ошибок код, приведённый в книжке... уже написал письмо автору книги... вот жду ответа...
Автор: mymuss
Дата сообщения: 27.04.2003 16:58
BAZIL

Цитата:
мне хочется узнать, что за компилятор нужно юзать, чтобы откомпилить без ошибок код, приведённый в книжке

GCC 4ever

Я борландовский компилятор последний раз запускал года 4 назад. Так вот, помнится мне, его можно конфигурировать (я IDE юзал). Там есть опция, которая переключает режим С / С++. Может она у тебя была включена?
Автор: FuzzyLogic
Дата сообщения: 27.04.2003 17:09

Цитата:
$PATH - это где должен быть? переменная среды что ли?

Yes


Цитата:
GCC 4ever



А вообще, мой мнение - не надо искать компилятор на котором компилится данный текст, лучше писать так, чтобы текст компилилился где-угодно, для этого есть стандарты и ряд приемов, типа использования макросов. Чем портабельнее текст тем лучше.
Поставь себе gcc, и компили текст из книжки.
Автор: Mickey_from_nsk
Дата сообщения: 28.04.2003 06:53
Скажу свое, может и не очень весомое, но слово.
Когда я читал книгу по STL, там черным по белому было написано, что в одном из последних стандартов C++ пришли к тому, чтобы .h вообще не писать в конце файла. То есть компилятор должен сам интуичить какой файл ему подключать. Если говорить про BC 3.1, то это старичек видимо про это еще не знает. В его оправдание можно заметить, что и свежак от MS - VC++ 7.0 этого тоже не делает, вместо этого ку него в include лежат две версии файлов iostream и iostream.h и кто то из них кого то включает. Хотя там тоже много всякого, но это - тема отдельной истории.
И по опыту (правда минимальному) работы с С++ и BC 3.1 - там не все гладко с шаблонами и STL. И вообще, шаблоны - это такой монстр, который не могут до конца поднять ведущие производители компиляторов.
Спрашивается, причем тут шаблоны и потоки? Отвечу - не знаю. Просто к слову пришлось. У меня это все в одной книге описывалось.
Автор: BAZIL
Дата сообщения: 28.04.2003 12:57
Скачал полный BC 3.1 - 19 мегов... вот такая гадость получилась:



Может это из-за того, что у меня XP установлен?
Автор: Mickey_from_nsk
Дата сообщения: 28.04.2003 15:40
BAZIL
Это из-за того, что у тебя нет пространства имен std.
В файле iostream.h класс iostream объявляется в глобальном пространстве имен, в отличие от файла iostream? где он находится в пр-ве имен std.
Или убирай .h или убирай std::.
Автор: Duke Shadow
Дата сообщения: 28.04.2003 16:19

Цитата:
Или убирай .h или убирай std::

Не поможет. Надо убрать std:: и оставить .h

В общем дело тут в чем. Новые требования стандарта гласят, что при подключении заголовочного файла можно не писать .h если этот файл принадлежит стандартной библиотеке языка С++. При этом все идентификаторы помещаются в область имен std. То же самое требование гласит, что при подключении файла из стандартной библиотеки языка С, без указания .h, к имени файла необходимо добавить букву c, т.е. #include <cconio>. При этом все идентификаторы также переносятся в область std.

Теперь про Borland C++ 3.x. Это достаточно древний компилятор, поэтому вышеизложенные правила он не знает. Правда к нему есть патчи, но по-моему дела они не изменят. Кроме того в нем наблюдаются проблемы с шаблонами (один раз видел лично), напрочь отсутствует STL (если мне память не изменяет), нет поддержки RTTI. Поэтому BAZIL тебе так нужен компилятор именно под DOS? Если нет, то на ближайшем дисковом развале возьми Borland C++ 5 или С++ Builder какой. В шестом Билдере по-крайней мере вышеприведенное правило работает. Без двух разных файлов.
Автор: albatros
Дата сообщения: 26.07.2003 08:17
BAZIL

iostream -- стандартная библиотека ввода/вывода С++, по соглашению не имеет расширения .h, убери его и будет работать. У меня в таком виде

#include <iostream>

int main()
{

std::cout << "Welcome to C++\n";
return 0;

}

все отлично компилируется в BCC 5.5
Автор: screw24
Дата сообщения: 30.07.2003 10:13
To BAZIL:
Тема старая, но может кому и пригодится:

1. В файлах конфигурациии для BCC55 надо указывать тот путь, где действительно находятся эти файлы.

2. Путь к BCC55 бинарной папке должен быть добавлен к системному пути:
SET PATH=%PATH%;C:\BCC55\BIN; (здесь путь, где программа установлена)

либо прописан в автоекзеке (Win9Х) или в системную переменную (WinNT/2000/XP).

Страницы: 1

Предыдущая тема: C++ Builder и PostgreSQL


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.