| Другое > Hard'n'Soft |
| Програмирование на C++ |
| << < (4/25) > >> |
| gepar:
Ещё один вопрос связанный по с++, но не с самим языком а с компиляцией: в учебнике много примеров даются с разделением интерфейса от реализации, те есть 1 файл main.cpp один abc.h с прототипами класса и один с классом abc.cpp. Так вот мой компилятор при попытке компилировать main (в main упоминается что нужно подключить "abc.h") не подхватывает abc.cpp, хотя как я понимаю должен бы как-то. Учитывая что vs2010 у меня это тоже не сделала предпологаю что нужно что-то дописывать ещё при подключении, но что и где? На данный момент я просто код main переношу из main.cpp в abc.cpp и компилирую abc.cpp. Надеюсь я понятно выразился? Если вы меня не поняли то в прикреплённом файле один из примеров с такой вот разделённой реализацией. |
| HoRRoR:
abc.cpp должен присутствовать в проекте, компилятор сам о его существовании не узнает. Если он есть в проекте, то IDE сообщает о нём компилятору и тот его подхватывает, т.е. одного его существования недостаточно. Ты добавлял его непосредственно в проект? |
| gepar:
--- Цитата: HoRRoR ---Ты добавлял его непосредственно в проект? --- Конец цитаты --- А если я не создаю новый проект, а просто открываю те cpp файлы в примере то как дать знать компилятору о существовании abc.cpp ? |
| HoRRoR:
В какой IDE ты это делаешь? Тут либо создавать проект, либо вручную скармливать всё компилятору через командную строку... |
| gepar:
HoRRoR,minigw. Я думал что раз уж мы назвали файл таким же именем как и .h файл то он должен бы автоматом подхватываться и это только мой компилятор баловался :) |
| HoRRoR:
MinGW - это компилятор, а я про среду разработки спрашивал. Предполагаю, что это Dev-C++ (потому как там можно открывать одиночные файлы без создания проектов). Я угадал? --- Цитата ---Я думал что раз уж мы назвали файл таким же именем как и .h файл то он должен бы автоматом подхватываться и это только мой компилятор баловался --- Конец цитаты --- Нет, тут другая политика. Как раз .h файлы и вовсе необязательно указывать компилятору - они подхватываются из объявлений в .cpp. Те, в свою очередь, независимо друг от друга компилируются в объектные файлы - а .h своего рода связующее звено, которое говорит, что такие-то переменные/функции/данные имеются в других файлах, т.е. в объектных файлах остаются ссылки на эти объявленные переменные/функции/данные. Потом объектные файлы загружаются и линкуются, в них ищется информация, объявленная в заголовочных файлах. |
| gepar:
HoRRoR,codeblocks в связке с minigw у меня. Ну да можешь не отвечать по этому поводу, спасибо за объяснение почему же стандартно cpp файл тот не подключается, через командную строку каждый раз всё равно неудобно будет открывать все нужные файлы. Добавлено позже: И ещё вопрос: как получить текущее время в том виде чтобы его можно было потом использовать (например чтобы это была строка с разделителем, которую можно было бы разбить на лексемы и использовать нужные данные или что подобное), ну хотя бы в виде часы:минуты:секунды, ну или как-то так. Функция time() из ctime возвращает количество секунд прошедшего с 1972 года вроде, но как это использовать в своих целях я не придумал :) Может есть ещё какие хитрости? Добавлено позже: P.S Дейтел под девятую главу жжёт блин, сложные упражнения даёт. Некоторые вообще жуткие по типу "создайте 3д поле 4x4x4 для игры в крестики-нолики с пк". |
| HoRRoR:
Ну, либо использовать больше возможностей этих функций, либо же использовать WinApi. Хотя, существование первого варианта делает второй не совсем целесообразным. |
| gepar:
Нашёл ещё вот такой вот метод вывода русского текста (пока наилучший): --- Код: ---// установить вручную шрифт Lucida Console в свойствах окна консоли // и запомнить это для всех окон с этим именем // записать в начале программы строку #include <windows.h> // записать в начале функции main ( после строки с символом [B]{[/B] ) // две следующих строки SetConsoleCP(1251); SetConsoleOutputCP(1251); --- Конец кода --- |
| gepar:
Вопрос номер n+1: А как-то можно ограничить ввод? Только не по количеству символов, а чтобы когда я ожидаю что будет введено число то символы не вводились и наоборот? В многих приложениях я встречал что когда пытаешься ввести в поле для цифр символы то ввод не происходит, правда эти приложения не являлись консольными так что не знаю можно ли сделать что-то подобное здесь. |
| HoRRoR:
Кури Win Api или ищи какие-нибудь унифицированные мультиплатформенные библиотеки. Как вариант - перехватывать нажатия клавиш, а консолью управлять самостоятельно (т.е. создать альтернативу стандартному вводу) - это будет простейшим решением, наверное. Почитай про создание простейших графических приложений на Win Api - принцип тот же, только с консолью. Главное - не принимай виндовые примочки за что-то единственное. Знай, что это лишь частный случай реализации Api. Абстрагирование - наше всё. Добавлено позже: Вообще я палку перегнул немного. В данном случае - достаточно будет просто перехватывать нажатия клавиш и фильтровать их. |
| gepar:
--- Цитата: HoRRoR ---Вообще я палку перегнул немного. В данном случае - достаточно будет просто перехватывать нажатия клавиш и фильтровать их. --- Конец цитаты --- Ну я вот тоже об этом думал, только не знаю как реализовать чтобы повсюду работало и надеялся что какая-то из стандартных библиотек это умеет и она доведена до ума :) Добавлено позже: А как у c++ обстоят дела с прерываниями? У меня тут по OS лабораторная где нужно их реализовать, примеры даны на паскале и asm'е, а можно ли реализовать это же на c++ ? У меня всё равно не даны указания на каком языке писать программу с их использованием. Среди примеров есть например обработка прерываний клавиатуры за каскадной схемой (подменяет стандартный обработчик прерываний так что при отпускании клавиши на клавиатуре звучит сигнал). Это же самое но на с++ реально ли реализовать вообще? Я так понимаю раз с++ унаследовал всё от с, который был придуман в бородатые времена и который слегка смахивает на asm то и возможность обработки прерываний должна бы быть, мои рассуждения правильные? Добавлено позже: Задание скорее всего у меня будет такое: сделать обработчик прерываний таймера, который после установки каждые 10 секунд подаёт звуковой сигнал и вызывает моргание светодиодов на клаве (наверное имеются в виду индикаторы капса, намлока и scroll лока) на 1 секунду. Парадокс конечно в том что на клаве у пк где мы сдаём лабы нет светоидов. Реально это будет сделать на с++? Или проще на асме? |
| HoRRoR:
C++ не смахивает на asm по определению. Но возможностей его хватит на что угодно. Тем более, если учесть, что паскаль менее гибок в этом плане. Лучше делал бы на асме - обычно суть этих лаб - показать, как всё работает на самом низком уровне. C++ уже будет некой оболочкой, но на нём должно быть проще. |
| gepar:
--- Цитата: HoRRoR ---Лучше делал бы на асме - обычно суть этих лаб - показать, как всё работает на самом низком уровне. C++ уже будет некой оболочкой, но на нём должно быть проще. --- Конец цитаты --- Понятно, ну я сегодня ещё у преподши уточню можно ли его на с++ делать, а потом буду решать уже. Может она хочет видеть работу только на asm и проблема выбора отпадёт сама собой :) Добавлено позже: --- Цитата: HoRRoR ---C++ не смахивает на asm по определению. --- Конец цитаты --- Это я о обычном с так отозвался. С++ конечно не похож. |
| HoRRoR:
--- Цитата: gepar от 14 Февраль 2011, 11:50:46 ---Это я о обычном с так отозвался. С++ конечно не похож. --- Конец цитаты --- В смысле об обычном? Язык высокого уровня и ассемблер - принципиально разные вещи. |
| gepar:
--- Цитата: HoRRoR ---В смысле об обычном? Язык высокого уровня и ассемблер - принципиально разные вещи. --- Конец цитаты --- Я о обычном си, с его всеми функциями похожими на асм. |
| HoRRoR:
--- Цитата: gepar от 14 Февраль 2011, 19:21:41 ---Я о обычном си, с его всеми функциями похожими на асм. --- Конец цитаты --- Чем же? Меня немного шокируют твои заявления. Да и чем функции C принципиально отличаются от функций C++? Мне было бы интересно знать. Значимых различий между этими языками не так уж много, скорей лишь разница в количестве возможностей. Грубо говоря, C++ - это дополненный до ООП и слегка модифицированный C. |
| gepar:
HoRRoR, да хотя бы принт с его тараканами :) |
| HoRRoR:
Ничего не понял из твоих слов. Объясни подробно что ты имеешь ввиду. |
| Mr2:
--- Цитата: gepar от 14 Февраль 2011, 22:07:35 ---HoRRoR, да хотя бы принт с его тараканами :) --- Конец цитаты --- Да. После << я в него(print) даже вникать не стал. :) |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |