Компиляция, компоновка и выполнение проекта
Эти операции могут быть выполнены или через меню Build главного окна, или с помощью кнопок панели инструментов. Опишем кратко основные команды меню Build: ¨ Compile – компиляция выбранного файла. Результаты компиляции выводятся в окно Output ¨ Build – компоновка проекта. Компилируются все файлы, в которых произошли изменения с момента последней компоновки. После компиляции происходит сборка (link) всех объектных модулей, включая библиотечные, в результирующий исполняемый файл. Сообщения об ошибках компоновки выводятся в окно Output. Если обе фазы компоновки завершились без ошибок, то созданный исполняемый файл с расширением.ехе может быть запущен на выполнение. ¨ Rebuild All – то же, что и Build, но компилируются все файлы проекта независимо от того, были ли в них произведены изменения. СОВЕТ: Если при компоновке многофайлового проекта посредством команды Build вы получаете сообщения об ошибках компиляции или сборки, которые вы не можете объяснить, то мы настоятельно рекомендуем вам воспользоваться командой Rebuild All. ¨ Execute – выполнение исполняемого файла, созданного в результате компоновки проекта. Операции Compile, Build и Execute удобнее выполнять через соответствующие кнопки панели инструментов Build Mini Bar, которая в увеличенном виде показана на рисунке 4. Compile(Ctrl +F7) Build(F7) Execute Program(Ctrl +F5) Go(F5) Insert/Remove BreakPoint(F9) Рисунок 4-Панель инструментов Build MiniBar Чтобы пощелкать по этим кнопкам, вернемся к нашему проекту First. Откомпилируйте проект, щелкнув на кнопке Build (F7). Диагностические сообщения компилятора и сборщика отображаются в окне вывода Output. Мы надеемся, что у вас все будет в порядке[4] и последняя строка в окне вывода будет выглядеть так: First.exe - 0 error(s), 0 warning(s) Теперь запустите приложение на выполнение, щелкнув на кнопке Execute Program (Ctrl+F5). Появится окно приложения First, изображенное на рисунке 5. Рисунок 5-Консольное окно приложения First.exe На приглашение ввести строку введите любую строку, например Hello, World!, и нажмите Enter. Программа должна вывести на экран то, что показано на рисунке 6. Рисунок 6-Вид окна после ввода строки Мы не будем здесь разбираться, почему программа вывела «обрезанную» строку Hello, проблема ввода-вывода строк рассматривается на лабораторной работе № 5. Попробуйте заменить в программе оператор вывода cout << "Welcome to C++!" << endl; следующим оператором: cout << "Добро пожаловать в C++!" << endl; Откомпилируйте (точнее говоря, скомпонуйте) программу и запустите ее на выполнение. Результат будет настолько безобразным (рисунок 7). Рисунок 7-Вид окна после замены в программе оператор вывода 1.6 Проблемы с вводом-выводом кириллицы Работа в среде Visual C++ 6.0 (в режиме консольных приложений) сопряжена с определенными неудобствами, вызванными различными стандартами кодировки символов кириллицы в операционных системах MS DOS и Windows. Этот вопрос подробно рассматривается на лабораторной работе № 1. Здесь мы только напомним, что весь ввод-вывод в консольном окне идет в кодировке стандарта ASCII, а текст в исходных файлах, набираемый в текстовом редакторе Visual C++, имеет кодировку в стандарте ANSI. Поэтому для нормального вывода строки, содержащей буквы русского алфавита, эту строку надо сначала «пропустить» через функцию CharToOem(), а уже потом отправлять на консольный вывод. Аналогично, если в программе есть консольный ввод текста и этот текст в дальнейшем надо сохранять в документах (файлах) с кодировкой ANSI, то перед сохранением его надо «пропустить» через функцию OemToChar(). С учетом сказанного выше можно предложить следующую адаптацию нашей первой программы к местным (российским) условиям: /////////////////////////////////////////////////////////// #include <iostream.h> #include <windows.h> char* Rus(const char* text); int main() { char strl[80]; // cout << "Welcome to C++!" << endl; cout << Rus("Добро пожаловать в C++!") << endl; // cout << "Enter the string:" << endl; cout << Rus("Введите строку:") << endl; cin >> strl; // cout << "The value strl = " << endl; cout << Rus("Значение строки strl = ") << endl; cout << strl << endl; return 0; } ////////////////////////////////////////////////////////// char bufRus[256]; char* Rus(const char* text) { CharToOem(text, bufRus); return bufRus; } ////////////////////////////////////////////////////////// Ничего не принимайте на веру. Немедленно, прямо сейчас (!) откомпилируйте эту программу и убедитесь, что она дает ожидаемый результат. 1.7 Конфигурация проекта Visual C++ позволяет строить проект либо в отладочной конфигурации (Win32 Debug), либо в выпускной конфигурации (Win32 Release). Мы рекомендуем вам всегда работать с проектами в отладочной конфигурации. Обычно она установлена по умолчанию. Все же не мешает проверить, с какой конфигурацией на самом деле идет работа. Для этого выберите в меню Project пункт Settings... Откроется диалоговое окно Project Settings. Проверьте, какое значение установлено в окне комбинированного списка Settings For:.. Если это не Win32 Debug, то переключитесь на нужное значение через команду меню Build > Set Active Configuration... 1.8 Как закончить работу над проектом Можно выбрать меню File, пункт Close Workspace. А можно просто закрыть приложение Visual C++. 1.9 Как открыть проект, над которым вы работали ранее 1. Способ первый: • Запустите на выполнение Visual C++. • Выберите меню File, пункт Open Workspace... • В открывшемся диалоговом окне найдите папку с вашим проектом, а в ней – файл ProjectName.dsw. • Откройте этот файл, щелкнув по нему мышью. 2. Способ второй: • Запустите на выполнение Visual C++. • Выберите меню File, наведите курсор мыши на пункт Recent Workspaces. • Если в появившемся меню со списком последних файлов, с которыми шла работа, вы найдете интересующий вас файл ProjectName.dsw, то щелкните по нему мышью. 3. Способ третий: • Не вызывая Visual C++, найдите папку с вашим проектом, а в ней – файл ProjectName.dsw. • Щелкните мышью на файле ProjectName.dsw. 1.10 Встроенная справочная система В IDE Visual С ++ имеется обширная справочная система, доступная через меню Help главного окна [5]. Кроме этого, очень удобно пользоваться интерактивной справкой: если вы находитесь в окне Editor, поставьте текстовый курсор на интересующий вас оператор или библиотечную функцию C++ и нажмите клавишу F1. Тотчас будет вызвана справочная система MSDN с предоставлением необходимой информации. Если запрошенный термин встречается в разных разделах MSDN, то сначала появится диалоговое окно «Найденные разделы». В списке разделов выберите тот, в котором упоминается «Visual C++». 1.11 Работа с отладчиком Полное описание возможностей встроенного отладчика Visual C++ и приемов работы с ним может потребовать отдельной книги, настолько объемна эта тема. Поэтому мы дадим только начальные сведения о работе с отладчиком Visual C++. Проще всего это сделать, написав программу, заведомо содержащую несколько ошибок, а затем показав, как с помощью отладчика можно найти и исправить эти ошибки. В частности, мы научимся устанавливать в программе точки прерывания и выполнять ее до заданной точки. Когда во время выполнения встречается точка прерывания, программа останавливается, а на экране появляется отлаживаемый код. Это дает возможность детально выяснить, что происходит в программе. Кроме того, программу можно выполнять последовательно, строку за строкой – такой процесс называется пошаговым выполнением. Этот режим позволяет следить за тем, как изменяются значения различных переменных. Иногда он помогает понять, в чем заключается проблема: если обнаруживается, что переменная принимает неожиданное значение, то это может послужить отправной точкой для выявления ошибки. После обнаружения ошибки ее можно исправить и выполнить программу заново в отладочном режиме. Назовем нашу программу (проект) именем Buggy. Программа должна вычислять среднее арифметическое первых пяти натуральных чисел: 1-5. Нетрудно догадаться, что ответ должен быть равен 3, однако из-за специально сделанных ошибок программа первоначально будет выдавать неправильный ответ [6]. Для создания программы выполните следующие действия: ¨ Создайте проект типа «консольное приложение» с именем Buggy. ¨ Добавьте к проекту файл buggy.срр и заполните его следующим текстом: #include <iostream.h> int main() { const N = 5; Int a[N] = {1, 2, 3, 4, 5}; float sum, average; int i; for (i = 1; i < N; i++) sum += a[i]; average = sum / N; cout << "average = " << average << endl; return 0; } ¨ Откомпилируйте проект. ¨ Запустите программу на выполнение. Вы должны увидеть в консольном окне приложения нечто вроде следующего результата (рисунок 8): average = -2.14748е+007, Рисунок 8-Вид окна после запуска программы на выполнение т. е. программа вычислила, что среднее арифметическое первых пяти целых чисел равно -21474800 (на вашем компьютере может быть и другое число), а это мало похоже на число 3.0. Начнем отладку нашей злополучной программы. 1.12 Установка точки прерывания Точка прерывания позволяет остановить выполнение программы перед любой выполняемой инструкцией (оператором) с тем, чтобы продолжать выполнение программы либо в пошаговом режиме, либо в непрерывном режиме до следующей точки прерывания. Чтобы задать точку прерывания перед некоторым оператором, необходимо установить перед ним текстовый курсор и нажать клавишу F9 или щелкнуть мышью на кнопке Insert/Remove Breakpoint на панели инструментов Build MiniBar. Точка прерывания обозначается в виде коричневого [7] кружка на левом поле окна редактирования. Повторный щелчок на указанной кнопке снимает точку прерывания. В программе может быть несколько точек прерывания.
|