Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Проблема перехода с одного компилятора на другой


Автор: N1ko 23.3.2008, 03:42
Здравствуйте... У меня возникла проблема... Работал сначала в банальном turbo с++  и решил от него перейти к dev-c++. но в результате перехода, программы написанные на С++ 3 просто не компилятся на dev-c++.  Влзможно проблема в библиотеках? Как мне её решить?

Автор: archimed7592 23.3.2008, 07:35
Цитата(N1ko @  23.3.2008,  03:42 Найти цитируемый пост)
Влзможно проблема в библиотеках?

Основная проблема в доисторичности упомянутого компилятора(тот что турбо).


Цитата(N1ko @  23.3.2008,  03:42 Найти цитируемый пост)
Как мне её решить? 

Каждую конкретную проблему нужно решать по отдельности...

Автор: bsa 23.3.2008, 11:48
N1ko, на данный момент можно посоветовать только одно - переписывай программу.
Если ты хотя бы ошибки показал, то можно было бы что-то другое посоветовать.

Автор: N1ko 23.3.2008, 14:29
Ну в общем действительно есть несколько конкретных проблем...

1)Меня интересует как вообще подключать библиотеки в этом компиляторе. Некоторые прописываются с ".h" некоторые без неё(например iostream)
   Можно ли сделать так, что бы подключать библиотеки по одному принципу? И обязательной ли является строка "using namespace std;"?

2) Не работает оператор Clrscr()... Как это исправить?
    Вот собственно как компилятор ругается C:\TC\DOC\1234.cpp `clrscr' undeclared (first use this function). То есть насколько я понял библиотека "conio.h" уже является не актуальной.  

3)Ну и третья проблема с графикой. Никак не смог подключить графику. Не могли бы вы дать пример простейшей программы с граффикой?(Ну например рисование круга или тп) И насколько я помню в турбо С++ нужно было прописывать пути к графике... Если та же ситуация и в dev-C++, расскажите пожалуйста  поподробнее как это сделать.

На данном этапе пока с другими проблемами не сталкивался. За ранее спасибо.

Автор: bsa 23.3.2008, 15:14
Цитата(N1ko @ 23.3.2008,  14:29)
1)Меня интересует как вообще подключать библиотеки в этом компиляторе. Некоторые прописываются с ".h" некоторые без неё(например iostream)
   Можно ли сделать так, что бы подключать библиотеки по одному принципу?
По стандарту С++ все стандартные заголовочные файлы подключаются без указания расширения (для си-шных еще нужно букву 'c' добавлять перед названием: #include <cstdio>). Если заголовочный файл ты создал сам, то можешь ему давать любой расширение (обычно, .h, .hpp, .hxx).
Цитата(N1ko @ 23.3.2008,  14:29)
И обязательной ли является строка "using namespace std;"?
Не только не обязательна, а нежелательна. Подобное можно использовать только в малюсеньких программах типа HelloWorld. В остальных программах крайне желательно указывать пространство имен для каждого класса/функции/объекта:
Код
#include <iostream>
#include <cmath> //почти тоже самое, что в Си math.h
int main()
{
    std::cout << "Hello, world" << '\n';
    std::cout << "sin PI/4 = " << std::sin(M_PI / 4) << std::endl;
    return 0;
}
Как вариант, можно делать так:
Код
#include <iostream>
#include <cmath> //почти тоже самое, что в Си math.h
int main()
{
    using std::cout; //в пределах функции cout будет интерпретироваться как std::cout
    cout << "Hello, world" << '\n';
    cout << "sin PI/4 = " << std::sin(M_PI / 4) << std::endl;
    return 0;
}

Цитата(N1ko @ 23.3.2008,  14:29)
2) Не работает оператор Clrscr()... Как это исправить?
    Вот собственно как компилятор ругается C:\TC\DOC\1234.cpp `clrscr' undeclared (first use this function). То есть насколько я понял библиотека "conio.h" уже является не актуальной.
conio.h является борландовским расширением и кроме как у нее нигде (или почти нигде) нет. Соответственно, функции clrscr() тоже нет. Если нужна особая работа с консолью, то поищи в гугле по словам: msdn console

Цитата(N1ko @ 23.3.2008,  14:29)
3)Ну и третья проблема с графикой. Никак не смог подключить графику. Не могли бы вы дать пример простейшей программы с граффикой?(Ну например рисование круга или тп) И насколько я помню в турбо С++ нужно было прописывать пути к графике... Если та же ситуация и в dev-C++, расскажите пожалуйста  поподробнее как это сделать.
Борландовской графики нигде, кроме борландовских компиляторов под DOS, нет. Если тебе нужна графика, то нужно использовать средства операционной системы (WinAPI, например) или кроссплатформенные библиотеки (QT, GTK, wxWidgets и пр.).

Автор: N1ko 23.3.2008, 15:39
И ещё один вопрос... Чуть не забыл... Если в dev-c++ не существует clrscr() соответственно и не существует оператора getch()(поскольку библиотека для подключения одна и та же)... Чем его можно заменить?

Автор: bsa 23.3.2008, 15:45
N1ko, смотря для чего он тебе нужен. Если "дождаться нажатия клавиши", то подойдет что-то вроде std::cin.ignore(std::cin.gcount()).get() - ожидание ввода.
А вообще, я уже сказал как искать.

Автор: susanin 23.3.2008, 17:27
чтобы не создавать тему ради одного вопроса спрошу здесь...

Цитата(bsa @  23.3.2008,  15:14 Найти цитируемый пост)
Не только не обязательна, а нежелательна

а почему так??? почему нежелательна?

Автор: JackYF 23.3.2008, 17:48
Цитата(susanin @  23.3.2008,  16:27 Найти цитируемый пост)
почему нежелательна? 

Попробую ответить по аналогии: захочешь ли ты тащить в свой дом всё, что ты нашёл на улице, устраивая свалку? Или, ты занесёшь нужный тебе десяток вещей?
Так вот... using namespace <...> - этим ты говоришь компилятору: "А... когда-нибудь да пригодится. Тащи всё.". Чем усложняешь потом жизнь себе (в перспективе) и компилятору (именно он будет в n раз дольше разбираться в этой свалке).

Автор: archimed7592 23.3.2008, 22:10
susanin, http://forum.vingrad.ru/index.php?act=Search&CODE=show&searchid=90a24241438f3fb287337e4075f50faa&search_in=titles&result_type=topics&flag=search&debug=&highlite=using%5C%2Bnamespace&skipped=. Если попыхтеть, можно найти др. обсуждения на эту тему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)