Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| deviljohnson |
2.8.2007, 8:04
Сообщение
#1
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Всем привет. Сразу оговорюсь, я не знал, где правильнее будет создать такую тему, то есть не со зла, поэтому прошу модеров, сильно не карать.))
Первый вопрос в следующем: линух я начал осваивать только-только, поэтому про него почти ничего не знаю, кроме того, что в нем есть встроенный компилятор gcc. Хотел испробовать, написал Программу, с большой буквы П: Код #include <iostream> #include <conio> void main(){ cout<<"inspection"<<endl; getch(); }; Вот, что-то такое. Но скомпилировать его не выходит. Оно пишет :" error before main ". Попробовал дописать к подключенным файлам .h - тот же результат. А литературы на эту тему у меня пока нет. Вопрос: в каком месте я дурак?))) Сообщение отредактировал deviljohnson - 2.8.2007, 8:07 -------------------- Билл- гей, т-с-с!
|
| afterstep |
2.8.2007, 8:32
Сообщение
#2
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
название файла - желательно расширение .cpp
при компоновке (линковке) - надо указывать явно используемые быблиотеки (в данном случае это сделано ключами командной строки -lstdc++ -lncurses) Текст должен выглядеть так: Код #include <iostream> #include <ncurses.h> using namespace std; int main(){ cout<<"inspection"<<endl; getch(); return 0; }; Строка компиляции и сразу же компоновки в исполняемій файл - так Код gcc 1.cpp -lstdc++ -lncurses Кроме того, что прочел о наличии компилятора - желательно ознакомиться с ним хоть чуть-чуть по документации. Все необходиміе данные о нем можно найти в интерактивной документации (man gcc) или на домашней странице. Есть отличия в виндовом и юниховом API - conio - одно из них. Ну и так далее... -- Общие принципы: - вначале читать, потом писать - все ошибки уже кто-то делал - надо уметь искать - перед тем, как задавать вопрос - надо поточнее его сформулировать и -- правильно сформулированный вопрос содержит ответ. |
| deviljohnson |
2.8.2007, 8:42
Сообщение
#3
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Читать пока негде, мануалами пользоваться пока не привык,- неудобно. Но это, я надеюсь, временное явление)). Спасибо.
-------------------- Билл- гей, т-с-с!
|
| deviljohnson |
18.9.2007, 7:26
Сообщение
#4
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
А что делать, если прога, вот такая
Код #include <stdio.h> int main(){ printf("Text"); return 0; } компилируется, создается файло a.out, но оно упорно не запускается? Bash пишет "команда не найдена" -------------------- Билл- гей, т-с-с!
|
| afterstep |
18.9.2007, 9:49
Сообщение
#5
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
ls -l a.out хотя бы для "разминки" указал - и строку запуска
-- chmod a+x a.out ./a.out |
| deviljohnson |
19.9.2007, 7:12
Сообщение
#6
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Запустилась))). А где можно прочитать про програмиирование, типа как это делать? Про библиотеки и всё такое. Я пишу, как под маздай- компилятор ругается на все подряд. Типа : cout not member of std и так далее. А ни одной нормальной книги на эту тему я не нашел и в мане про gcc написано только как работает компилятор.
-------------------- Билл- гей, т-с-с!
|
| deviljohnson |
19.9.2007, 9:05
Сообщение
#7
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
И вот еще: где можно содрать исходник проги типа freecell? Например в аспе она есть, во время установки предлагают поиграть, но исходник- обыскался- не нашел.
-------------------- Билл- гей, т-с-с!
|
| afterstep |
19.9.2007, 10:36
Сообщение
#8
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
маны содержат описание функций
само программирование на С - надо учить по книгам. Например, Бьерн Страуструп. Язык программирования С++ Цитата Ее можно считать ключевой в любом собрании книг по С++. Об авторе книги: Бьерн Страуструп является разработчиком языка С++ и создателем первого транслятора. Исходники всех асповских программ - если у тебя "коробочная версия" - то должны быть на отдельном диске (SRPMS) или - их можно скачать оттуда же, откуда скачал систему. Системные пакеты лежат обычно в каталоге RPMS, а пакеты исходников (source rpm) - в каталоге SRPMS |
| deviljohnson |
19.9.2007, 10:51
Сообщение
#9
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Я изучаю по "Эл Стивенс. Самоучитель по С++", хорошая книга, но проблема в том, что несмотря на то, что там написано, что все примеры программ в книге- не зависят от платформы, и должны работать везде, под линуксом это все у меня не компилируется.
-------------------- Билл- гей, т-с-с!
|
| afterstep |
19.9.2007, 10:56
Сообщение
#10
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
пример в студию....
|
| deviljohnson |
19.9.2007, 11:02
Сообщение
#11
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Например то, что он ругается почти на все подключаемые библиотеки. Подробнее завтра вывешу.
Код #include <iostream> #include <ncurses.h> using namespace std; int main(){ cout<<"inspection"<<endl; getch(); return 0; }; Здесь ругается на то что сout не является членом std. И если написать std::cout- тоже Сообщение отредактировал deviljohnson - 19.9.2007, 11:05 -------------------- Билл- гей, т-с-с!
|
| afterstep |
19.9.2007, 12:07
Сообщение
#12
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
странно....
все работает без единого писка... Код [ja@afterstep]$ gcc -x c++ 1.c -lstdc++ -lncurses [ja@afterstep]$ ./a.out inspection А теперь - о пользе чтения манов Возможные твои ошибки: - тип препроцессора6 используемого компилятором - задается по расширению файла. для С++ это .cc .cpp и т.д. - но - можно "пальцем показать куда плыть" - опция -x c++ прямо указывает компилятору, какой из препроцессоров пользовать. - словосочетание using namespace std требует "прямого" указания библиотеки libstdc++ - реализуется опцией -lstdc++ - #include <ncurses.h> с последующим использованием каких-то функций с библиотеки ncurses - тоже нуждается в подключении библиотеки - -lncurses -- Вообще то - лучше тебе освоитьпервоначально Makefile и в дальнейшем пользовать команду make - сильно упростишь мебе разработку например, создадим простенький Makefile: Код 1: gcc -x c++ 1.c -lstdc++ -lncurses -o 1 и для компиляции/сбоки используем команду make Код [ja@afterstep]$ make gcc -x c++ 1.c -lstdc++ -lncurses -o 1 [ja@afterstep Ah]$ ./1 inspection Как видишь - все хорошо.... |
| deviljohnson |
24.9.2007, 6:55
Сообщение
#13
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Попробовал всеми способами, не хочет. Если писать std::cout, пишет что cout not member of std, если просто cout- то cout not declared in this scope.
По поводу острова, написал маленький файл .h, с определением поля и .cpp, который выводит 20х20 символов, завтра создам тему и вывешу их. Но оно выводит текст, а как выводить графику? Скачал 3 книги по программированию под линь,- ни в одной ничего вразумительного... -------------------- Билл- гей, т-с-с!
|
| afterstep |
24.9.2007, 8:18
Сообщение
#14
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
как "не хочет"?
Давай пошагово - тот текст программы6 что ты дал - условно, будем его называть 1.cpp - какие ошибки выводит на экран после gcc -c 1.cpp ? - какие ошибки выводит после gcc 1.cpp -lstdc++ -lncurses -o 1 ? -- только выдели с екрана - и вставь сообщения полностью. -- Касаемо GUI - посмотри в сторону QT - учебник в инете есть даже на русском. Среда разработки (именно под это) - KDevelop - есть в наличии во всех линуховых дистрибутах |
| deviljohnson |
24.9.2007, 9:53
Сообщение
#15
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Цитата только выдели с екрана - и вставь сообщения полностью. Завтра принесу)) Цитата Касаемо GUI - посмотри в сторону QT - учебник в инете есть даже на русском. Среда разработки (именно под это) - KDevelop - есть в наличии во всех линуховых дистрибутах Это я не про гуй, по qt у меня учебник есть в электрическом виде. Я про то, как выводить поля для острова. Можно же это делать из консольного приложения? -------------------- Билл- гей, т-с-с!
|
| afterstep |
24.9.2007, 9:55
Сообщение
#16
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
да - вполне. termcap или curses/ncurses - дают полноту счастья
давай наброски - будем смотреть и думать |
| deviljohnson |
25.9.2007, 10:15
Сообщение
#17
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Цитата только выдели с екрана - и вставь сообщения полностью. Код [covex@localhost~]$ gcc -x c++ file.c -lstdc++ -lncurses file.c: in function 'int main()': file.c: 6: error: 'cout' is not a member of 'std' [covex@localhost~]$ gcc -x c++ file.c -lstdc++ -lncurses file.c: in function 'int main()': file.c: 6: error: 'cout' was not declared in this scope Первый вариант- это если написать std::cout, второй- если просто cout -------------------- Билл- гей, т-с-с!
|
| afterstep |
25.9.2007, 10:28
Сообщение
#18
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
опущено (пропущено)
Код #include <iostream> - именно это и порождает такую ошибку Код [ja@afterstep opeople]$ cat 1.cpp //#include <iostream> #include <ncurses.h> using namespace std; int main(){ cout<<"inspection"<<endl; getch(); return 0; }; [ja@afterstep opeople]$ gcc 1.cpp -lncurses -lstdc++ 1.cpp: In function ‘int main()’: 1.cpp:7: error: ‘cout’ was not declared in this scope 1.cpp:7: error: ‘endl’ was not declared in this scope [ja@afterstep opeople]$ vi 1.cpp [ja@afterstep opeople]$ cat 1.cpp #include <iostream> #include <ncurses.h> using namespace std; int main(){ cout<<"inspection"<<endl; getch(); return 0; }; [ja@afterstep opeople]$ gcc 1.cpp -lncurses -lstdc++ [ja@afterstep opeople]$ ./a.out inspection |
| deviljohnson |
25.9.2007, 10:36
Сообщение
#19
|
![]() Пользователь Группа: Активисты Сообщений: 650 Регистрация: 13.6.2007 Из: Москва Пользователь №: 16 928 |
Блин, вот это да!))) Проверю вечером, если это так- убью себя головой ап стену.
-------------------- Билл- гей, т-с-с!
|
| afterstep |
25.9.2007, 11:05
Сообщение
#20
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
стену жалко.
В пример заодно вставь инициализацию/деактивацию curses, нарисуй окно, в окне - выведи поле. Предусмотри цикл управления с клавиатуры: стрелками курсора перемещаешься, пробелом или enter'ом - меняешь состояние клетки. Возможные состояния - пусто (.), кролик ( желательно - поле сделать классом - с методами: set_animal (x, y, who) get_animal (x,y) refresh who - enum none, rabbit, wolf, she_wolf на еще пример "вдогонку" http://alexber220.narod.ru/ncurses/page2.htm |
![]() ![]() |
|
Текстовая версия | Сейчас: 23.5.2012, 2:42 |