Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб по С и С++ / Лекция№1 Pабота в среде VC++

.doc
Скачиваний:
64
Добавлен:
17.03.2015
Размер:
74.24 Кб
Скачать

Профессиональный разработчик ПО вынужден большую часть жизни проводить за компьютером, бесконечно повторяя цепочку одних и тех же действий, которые составляют суть процесса отладки приложения. Более точным выражением будет — отладка проекта. Студия разработчика (Developer Studio) Visual C++ 7.0 предоставляет для этой цели целый набор достаточно удобных встроенных инструментов (Tools). Возможности студии, может быть, не столь эффектны, как в системе визуального дизайна Borland C++ Builder, но они позволяют разрабатывать проекты семнадцати различных типов, организовывать зависимые (dependent) проекты, объединять проекты разных типов. Вы можете создавать и отлаживать как структурно-, так и объектно-ориентированные программы внутри интегрированной среды разработки Integrated Development Environment (IDE), используя следующие инструменты: редакторы текста и ресурсов, окна просмотра и встроенный отладчик. Вы можете также изменять настройки компилятора и компоновщика.

Создаваемые вами файлы должны быть включены в Visual C++ Project, который, в свою очередь, необходимо поместить в рабочее пространство (Workspace). Так называется хранилище проектов или область памяти (папка на диске), где расположены ваши проекты и их конфигурации. Workspace может содержать несколько разных проектов (multiple projects), в том числе и проекты различных типов (например, Visual C++ и Visual J++ ). Запустив оболочку, вы увидите окно редактора текста, а слева от него — окно, которое носит название Workspace. Вкладки или страницы этого окна представляют собой инструменты для просмотра (Viewers) файлов проекта, действительно:

• ClassView — демонстрирует классы, их данные и методы;

• FileView — показывает все файлы, включенные в проект;

• ResourceView — позволяет быстро попасть в нужный редактор ресурсов.

14 Глава 1 • Работа и жизнь в среде MS Visual C++

В студии Visual 5.0 есть еще одна страница — InfoView, которая помогает ориентироваться в сопутствующей обширной документации и быстро находить в ней то, что нужно. В версии 6.0 этот инструмент выделен в отдельное приложение, называемое MSDN Library (библиотека разработчика), потенциальные возможности которого очень велики, но они в полной мере реализуются только в том случае, если есть связь с Internet.

При создании нового проекта (по команде меню File ► New ► Projects) по умолчанию создается один проект, но в двух конфигурациях:

• Debug — версия проекта, в которой выключается оптимизация кода и включается в него отладочная информация;

• Release — версия, в которой делается все наоборот (выключается отладочная информация и включается оптимизация кода).

Сначала вы увидите только одну из папок (Debug или Release) в зависимости от выбора активной конфигурации в меню Build ► Set Active Configuration. Обычно при создании нового проекта (Project) он автоматически помещается во вновь созданное рабочее пространство (Workspace) в конфигурации Debug. Нужно отметить, что демонстрация файлов проекта в отдельной папке проекта не означает, что файлы физически расположены в одной папке. Оболочка может использовать ссылки на файлы из других директорий, но графически отображать файлы так, как будто они находятся в папке проекта. В процессе работы с проектом вы можете безболезненно удалять папки Debug или Release. Они автоматически восстановятся при последующей компиляции исходных файлов. Когда создано рабочее пространство, в него можно добавлять:

• новые проекты;

• новые конфигурации (configurations);

• взаимозависимости (interdependencies) между проектами;

• подчиненные проекты (subprojects).

Студия Visual C++ 6.0 предлагает выбор из семнадцати различных типов проектов приложений. Их все можно увидеть, выбрав пункт меню File ► New ► Projects. Мы будем использовать только три из них:

• Win32 Application — проект Windows-приложения, ориентированного на использование функций API и использующего GDI — Graphic Device Interface (графический интерфейс Windows);

• Win32 Console Application — проект приложения, не использующего GDI (текстовый режим окна);

• MFC AppWizard (exe) — проект приложения для Windows с использованием библиотеки MFC (Microsoft Foundation Classes), основанный на начальном остове или стартовой заготовке приложения.

Несмотря на то что книга ориентирована на использование библиотеки MFC, мы все же создадим один проект, который построен традиционно, то есть основан на использовании функций API (Application Programming Interface).

Вы, конечно, знаете, что основным инструментом разработчика при создании Windows-приложений является библиотека API — интерфейс разработки приложений. В MFC-приложениях эта библиотека используется, но скорее неявно. API

Список файлов проекта 15

содержит более 2000 функций, а также описания великого множества структур и типов данных. Чтобы преуспеть в подходе к разработке приложений на основе функций API, необходимо иметь четкое представление об их возможностях, ознакомиться с используемыми структурами данных и проникнуть в тайны философии программирования для Windows. Разработка таких проектов является сложным, кропотливым и, следовательно, медленным процессом. Необходимость понимания фундаментальных принципов и моделей, заложенных в архитектуру Windows, потребует от программиста достаточно больших временных затрат на знакомство со специальной литературой, например с книгой Джеффри Рихтера «Windows для профессионалов». Для того чтобы стать опытным API-программистом, потребуется не менее пяти лет упорного труда.

Использование библиотеки классов MFC многократно уменьшает затраты на разработку приложения и существенно упрощает процесс создания приложения. Такой инструмент студии разработчика, как MFC AppWizard, автоматизирует процесс создания начальной заготовки приложения и по выбранному вами типу проекта создает стартовый остов приложения, состоящий из одного-двух десятков файлов. Некоторые из них перечислены ниже, какие-то вы никогда не будете открывать и изменять, а другие — сами будете подключать к проекту.

Есть файлы, которые существуют во всех типах проектов. Рассмотрим их. Предположим, что вы выбрали какой-то тип проекта (из возможных альтернатив, предложенных в диалоге File ► New ► Projects) и в качестве имени проекта (Project Name) задали имя First. AppWizard создаст каталог First и поместит туда 4 файла: First.dsw, First.opt, First.dsp, First.neb:

• First, dsw — это developer studio workspace-файл, используемый средой IDE. Он помогает объединить все проекты в одном рабочем пространстве.

• First.opt — этот файл содержит workspace options, используемые IDE. Здесь сохраняются все удобные вам настройки рабочего пространства, которые вы выбрали в течение работы с проектом.

• First, dsp — файл типа developer studio project. Здесь хранится информация, описывающая конкретный проект. Сколько проектов в workspace — столько и dsp-файлов.

• Fi rst. neb — файл типа по compile browser, в котором располагается информация, генерируемая синтаксическим анализатором и используемая такими инструментами, как ClassView, WizardBar, Component Gallery.

Кроме этих файлов (созданных изначально) в течение работы с проектом в директории First или в ее поддиректориях будут появляться другие файлы, которые мы дадим в виде списка. Этот список имеет смысл использовать как справочник. При первом чтении его можно пропустить.

16 Глава 1 • Работа и жизнь в среде MS Visual C++

• First.h — главный файл заголовков {headerfile), который содержит определения глобальных переменных, классов и типов, директивы ^include для подключения других файлов заголовков. В нем объявляется класс приложения CFirstApp (производный от класса CWinApp) и переопределяется метод Initlnstance.

• First.cpp — это главный файл исходного текста программы. Он создает один объект класса CFirstApp и дает тело метода Initlnstance.

• FirstDlg.h, FirstDTg.cpp — создаются, если приложение создано на основе диалога (одна из возможностей, предоставляемая AppWizard).

• Fi rstDoc. h, Fi rstDoc. cpp — содержат описание и остовы методов класса, производимого от CDocument. Модель программирования Документ-Вид и, в частности, класс CDocument поддерживают стандартные операции с абстрактным документом, такие как его создание, запись содержимого в файл и чтение из файла {serialization).

• FirstView.h, FirstView.cpp — содержат описание и остовы методов класса, производимого от класса CView, который инкапсулирует данные и методы для воспроизведения содержимого документа. Один документ может иметь несколько обликов {Видов). Класс CF1 rstView может происходить от классов CEditView, CFormView, CRecordView, CDaoRecordView, CTreeView, CListView, CRichEditView, CScroliView, которые помогают разработчику создавать различные облики документа.

• MainFrm.h, MainFrm.cpp — содержат описание и остовы методов класса CMainFrame, производимого от класса CFrameWnd (для 5Х)/-приложений) или CMDIFrameWnd (для МО7-приложений). Класс управляет поведением главного окна приложения, в частности, таких его элементов, как Tool Bar и Status bar.

• Resource.h, First. гс — файлы ресурсов, которые содержат определения меню, значков, картинок, клавиш быстрого доступа {hot-keys), диалогов, строк подсказок, высвечиваемых в строке состояния, и т. д. В них есть директивы для включения файлов afxres.h и afxres.rc, которые содержат определения стандартных ресурсов и ссылку на файлы res\First.ico и res\too1bar.bmp с bitmap-изображениями значков приложения.

• Fi rst. rc2 — файл, который содержит общие ресурсы, используемые в нескольких проектах. Помещайте туда ресурсы, многократно использующиеся различными проектами, и подключайте Fi rst. гс2 директивой #inc1ude (в файле Fi rst. re).

• First.clw — используется одним из Tools (ClassWizard) для хранения информации о классах в вашем проекте.

• First.odl — содержит исходный код языка описания объектов (object description language), необходимый для библиотеки элементов управления.

• Readme.txt — поможет вам разобраться в файлах проекта.

В проектах ранних версий студии, предназначенных для работы в режиме Win16 (16-bit Windows), вы можете обнаружить файлы с расширением def — файлы описания ехе-модуля (сегменты DATA и CODE, размер областей heap и stack и т. д.).

Проект Win32 Console Application 17

Проект Win32 Console Application

Чтобы плавно войти в курс дела, не испытывая стресс от обилия файлов, созданных инструментом AppWizard, следует выполнить действия, описанные в этом разделе, для создания самого простого типа проекта. Искушенный читатель может пропустить и этот раздел. Первая программа под именем First преследует две цели: ознакомиться со студией разработчика и научиться пользоваться встроенным в нее отладчиком. Для этого не нужно использовать графический интерфейс Windows, и мы выбираем тип проекта Win32 Console Application. Выполните следующую последовательность действий:

1. Выберите в меню команду File ► New ► Projects.

2. В появившемся окне диалога в поле Project Name задайте имя проекта: First

3. Выберите месторасположение папки с проектом (в поле Location:).

4. Выберите тип проекта Win32 Console Application и нажмите ОК.

5. Согласитесь с выбором An empty project (только в версии 6.0).

6. Подтвердите выбор, нажав ОК.

Фокус переходит в окно Workspace при активной вкладке FileView. Если ваша программа создается с нуля (from scratch), то нажмите кнопку New Text File на стандартной панели инструментов (standard toolbar). Включение и выключение какой-либо из панелей инструментов осуществляются с помощью правой кнопки мыши, когда ее указатель расположен над пустым окном редактора текста, пустым местом строки меню или панели инструментов. Команду, связанную с той или иной кнопкой панели, можно легко узнать по всплывающей подсказке (ToolTip). В появившееся справа окно редактора текста можно ввести любой текст, в том числе и коды программы. В этом состоянии обычно поступают так:

• в текстовом редакторе набирают коды;

• сохраняют их в файле с произвольным именем и расширением .с или .срр;

• включают программу в проект.

Для практики введите (или скопируйте из файла First.срр на прилагаемой дискете) следующие коды:

void main() // Текст первой программы для ознакомления со студией

{

double d: //Какие-то переменные различных типов

float f;

long 1;

int i:

// Цепочки присвоений

i = 1 = f = d = 100/3;

d - f - 1 - i - 100/3;

l = 1 = f = d = 100/3.;

d = f = 1 = i = (double)100/3; }

Сохраните файл под именем First.срр. Вы обратили внимание на то, как изменился облик текста после того, как изменился тип файла? Редактор текста показывает нам, как будут восприняты компилятором ключевые слова языка C++.

Многие ошибки ввода можно обнаружить благодаря такому форматированию текста на ранней стадии (до компиляции). Полезно также позволить редактору текста отформатировать ваш текст. Для этого выделите его (Ctrl+A) и выберите Edit ► Advanced ► Format Selection. Для подключения файла к проекту выполните следующие действия: •

1. Откройте страницу FileView в окне Workspace.

2. Разместите указатель мыши над строкой First files. Включите правой кнопкой контекстное меню и выберите команду Add Files to Project....

3. Укажите на ваш файл First.срр и подтвердите выбор.

Элемент First files окна Workspace при этом изменяет свой облик. Теперь его можно раскрыть (expand) и увидеть имена файлов, подключенных к проекту. Откройте и проинспектируйте вкладку ClassView, с которой обычно работают наиболее интенсивно. В данный момент она содержит скудный набор элементов, сообщая вам, что в проекте существует лишь одна глобальная функция — main.

ЗАМЕЧАНИЕ -------------------------------------------------------------------------------------------------

Распространенной ошибкой является ситуация, когда в окне редактора отображен один файл, а к проекту подключен какой-то другой, возможно, с тем же именем, но из другого каталога. Чтобы быть уверенным, что вы видите именно то, что будет компилироваться, следует выполнить двойной щелчок на имени функции (в данном случае main) в окне ClassView.

-----------------------------------------------------------------------------------------------------------------

Теперь можно работать с проектом. Самый быстрый способ запуска программы — с помощью команды Build ► Execute или Build ► Start Debug ► Go. Конечно (для еще большего ускорения), следует пользоваться комбинациями клавиш быстрого доступа (shortcut keys) — Ctrl+F5 или F5. Отдав команду, вы должны увидеть сообщение (message box) о том, что не существует файл First.exe или First.obj во вновь созданной папке Debug (эта конфигурация проекта выбрана по умолчанию). Согласитесь с предложением создать эти файлы.

ЗАМЕЧАНИЕ -------------------------------------------------------------------------------------------------

Теперь ваше внимание должно сосредоточиться на появившейся странице Build в окне Output (внизу экрана) — сюда компилятор и компоновщик выводят свои сообщения.

-----------------------------------------------------------------------------------------------------------------

Если вы при вводе не внесли ошибок, то должны увидеть (всего лишь!) семь предупреждающих сообщений (warnings), которые говорят о том, что в программе есть неточности или использован слишком вольный стиль. В данном случае это сделано намеренно, но в остальных случаях следует внимательно изучать все предупреждения и стараться избавиться от них, так как они часто указывают на очевидные или скрытые ошибки.

Сейчас мы рассмотрим, как выполнить программу в режиме пошаговой отладки, но пока заметим, что она не содержит функций вывода и поэтому после запуска (Ctrl+F5) в окне приложения First.exe ничего, кроме сообщения, не появится. Видно, что это окно такое же, как и любое другое окно DOS-приложения, но если запустить программу в среде DOS, то будет выдано сообщение о том, что Fi rst. ехе является приложением для Windows. Теперь вы имеете представление о консольных приложениях Windows, которые не используют GUI (Graphical User Interface) — графический интерфейс пользователя.

Проект Win32 Console Application 19

Выполнение приложения в режиме отладки

В предыдущем разделе мы создали новый файл с исходным кодом и подключили его к проекту First. Аналогичные действия следует выполнять, в случае если программа уже существует и хранится в файле:

1. В окне Workspace над значком First files вызовите контекстное меню.

2. Выберите Add Files to Project или (через главное меню): Project ► Add To Project ► Files....

3. Найдите ваш файл (или файлы), который надо включить в проект.

4. Подтвердите выбор (нажмите ОК).

Компиляция, компоновка и запуск приложения в Microsoft Developer Studio совершаются с помощью команд, выбираемых из меню Build, или с помощью комбинаций клавиш (shortcuts). Самым быстрым способом выполнить проект является нажатие комбинации клавиш Ctrl+F5 (Execute) и подтверждение готовности создать (build) исполняемый файл Fi rst. exe. Выполнение Debug-версии проекта в пошаговом режиме осуществляется с помощью следующих клавиш:

• F10 — без захода в вызываемые функции (Step Over);

• Fll — с заходом в вызываемые функции (Step Into).

Именно это мы и рекомендуем вам проделать сейчас. Поставьте фокус в окно редактора и нажмите клавишу F10. Приложение запускается в режиме пошаговой отладки, пункт меню Build заменяется на Debug, и появляются два новых окна для просмотра текущего содержимого переменных программы (удобно пользоваться как тем, так и другим):

• в окне Variables набор наблюдаемых переменных выбирается отладчиком;

• в окне Watch набор переменных или выражений вы выбираете сами.

Массивы, объекты классов и структуры можно «раскрывать» (expand). Переход в окно выполняемого приложения выполняется обычны,-1 способом — нажатием комбинации клавиш Alt+Tab. Каждое нажатие клавиши F10 приводит к выполнению одной строки программы. Указатель в окне редактора опережает события и устанавливается на ту строку, которую еще предстоит выполнить. Нажмите клавишу F10 еще раз — указатель перемещается на первую строку с выполнимыми операторами. Посмотрите в окно Variables. Здесь высвечены текущие значения переменных. Выполните все строки программы, нажимая клавишу F10 и каждый раз объясняя себе те значения, которые вы наблюдаете в окне Variables. Если вы не можете объяснить наблюдаемые значения, то следует сначала прочесть и хорошо проработать материал, приведенный в Приложении, и затем вновь возвратиться к изучению этой главы.

Останавливать отладку следует командой Stop Debugging (Shift+F5). При ее продолжении (после выполнения последнего оператора программы) вы на короткое время попадаете в системную функцию mainCRTStartup, а затем весь процесс повторяется. Опробуйте клавишу F11, которая служит для пошагового выполнения с заходом в вызываемые функции. Она позволяет пройтись по многим системным функциям, и ее можно рассматривать как некоего гида по коду, написанному разработчиками системы. Без сомнения, таким образом можно многое

20 Глава 1 • Работа и жизнь в среде MS Visual C++

увидеть, многое понять и многому научиться, так что советую запомнить этот способ перемещения по кодам. Он просто необходим, когда вы хотите попасть внутрь своей функции, вызов которой находится в текущей строке отладчика.

Ошибки, обнаруженные на этапах компиляции и компоновки, выводятся в окно Output. Мгновенный переход в файл с текстом программы (к строке с ошибкой) происходит при двойном щелчке на строке с сообщением об ошибке. Это справедливо для ошибок, обнаруженных на этапе компиляции. Многие ошибки на этапе компоновки (linking) могут быть исправлены изменением настроек проекта (Project ► Settings..,). Управлять видимостью служебных окон на экране удобно с помощью трех кнопок: Workspace, Output и Window List (пользуйтесь ToolTip), расположенных на стандартной панели управления. Опробуйте их и не забывайте использовать для увеличения площади окна редактора. Для этой же цели рекомендуем вместо множества существующих панелей инструментов создать одну свою, оснастить ее теми кнопками, которые вы чаще всего используете, и, возможно, даже разместить ее в продолжении строки меню.

Эти действия легко выполнить с помощью команды Tools ► Customize > Toolbars ► Menu bar. Флажки в окнах позволяют включать и выключать панели инструментов. Включайте их по очереди и перетаскивайте с них вес поправившиеся кнопки прямо в строку меню. Чтобы установить разделители (для групп кнопок), слегка потяните кнопку вправо и отпустите. Слева от кнопки появится разделитель. Чтобы не портить существующие панели, при перетаскивании кнопок держите нажатой клавишу Ctrl. Если все-таки испортили, то выделите испорченную панель (сделайте ее синей) в окне Toolbars и нажмите кнопку Reset. Все удивительно просто и удобно. Поработав со своими настройками Workspace, вы больше не будете заботиться о восстановлении выбранного интерфейса. Студия разработчика запомнит настройки и не будет (при переключении режимов работы) автоматически создавать ненужные вам панели инструментов.

Соседние файлы в папке Лаб по С и С++