Скачать презентацию Дополнение Исключительная ситуация exception — Это состояние Скачать презентацию Дополнение Исключительная ситуация exception — Это состояние

Лекция 10_Дополнение.ppt

  • Количество слайдов: 38

Дополнение Дополнение

Исключительная ситуация exception - Это состояние ошибки, обнаруженное в программе в ходе ее выполнения Исключительная ситуация exception - Это состояние ошибки, обнаруженное в программе в ходе ее выполнения (деление на ноль, невозможность выделения памяти при создании нового объекта и т. д. )

► try – контролируемый блок ► throw - генерация искл. ситуации внутри try throw(любой) ► try – контролируемый блок ► throw - генерация искл. ситуации внутри try throw(любой) ► catch – обработчики исключений, идут за try

Перехват исключений Перехват исключений

Запуск исключений Запуск исключений

► Выполнение текущей функции прекращается ► Созданные авто переменные уничтожаются ► Управление передается в ► Выполнение текущей функции прекращается ► Созданные авто переменные уничтожаются ► Управление передается в точку вызова функции ► В точке возврата создается та же исключ ситуация и т. д. ► Управл предается в обработчик исключений

Пространство имен. для решения проблемы совпадения имен механизм, называемый пространством имен Пространство имен. для решения проблемы совпадения имен механизм, называемый пространством имен

namespace [идентификатор] { описание для этой рабочей области } using namespace [идентификатор] namespace [идентификатор] { описание для этой рабочей области } using namespace [идентификатор]

квалифицированное имя состоит из идентификатора пространства имен и идентификатора объекта, разделенных оператором разрешения области квалифицированное имя состоит из идентификатора пространства имен и идентификатора объекта, разделенных оператором разрешения области видимости или контекста (: : ). NAME: : b=2; NAME: : fun(str, NAME: : a);

неквалифицированное имя using namespace NAME // NAME: : b=2; // NAME: : fun(str, NAME: неквалифицированное имя using namespace NAME // NAME: : b=2; // NAME: : fun(str, NAME: : a); fun(str, a);

селективная директива using Ключевое слово using как объявление using имя: : член обеспечивает более селективная директива using Ключевое слово using как объявление using имя: : член обеспечивает более подробное управление именами, переносимыми в пространство имен

namespace. A { int My. Val=10; } namespace. B { int My. Val=20; } namespace. A { int My. Val=10; } namespace. B { int My. Val=20; } namespace. C { int My. Val=30; }

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

Управление конфигурациями проекта в Visual Studio 2010 ► Конфигурация - набор параметров компилятора, компоновщика Управление конфигурациями проекта в Visual Studio 2010 ► Конфигурация - набор параметров компилятора, компоновщика и библиотекаря, используемый при построении проекта. По умолчанию: Debug (отладочная) и Release (финальная)

Debug (отладочная) ► включение полной символьной отладочной информации ► выключенная оптимизация Release (финальная) ► Debug (отладочная) ► включение полной символьной отладочной информации ► выключенная оптимизация Release (финальная) ► не содержит никакой отладочной информации (м. б. - > . pdb) ► подвергается полной оптимизации

. pdb . pdb

Макросы ► особый тип команд препроцессора — специальной программы, которая обрабатывает весь исходный код Макросы ► особый тип команд препроцессора — специальной программы, которая обрабатывает весь исходный код программы перед тем, как он будет передан компилятору

Отладочный макрос ASSERT ► ASSERT (assertion - утверждение) ► а) функция — вызвать аварийную Отладочный макрос ASSERT ► ASSERT (assertion - утверждение) ► а) функция — вызвать аварийную остановку (гарантируя запись/выдачу соответствующей информации) ► б) автоматически исчезают из релизного кода. (!!!!макрос ASSERT работает только в отладочной версии программы)

void assert(expression); печатает диагностическое сообщение и завершает вызванный процесс, если expression ложно, 0. Assertion void assert(expression); печатает диагностическое сообщение и завершает вызванный процесс, если expression ложно, 0. Assertion failed: file , line ,

Макрос TRACE Чтобы сообщения программы отображались в окне Макрос TRACE Чтобы сообщения программы отображались в окне "Вывод" отладчика

Макроподстановка #define имя замещающий текст Имена в #define Область действия #define Макроподстановка #define имя замещающий текст Имена в #define Область действия #define

Примеры Примеры

#define идентиф-ор(парам-ы) стр_с_парам-и #define идентиф-ор(парам-ы) стр_с_парам-и

#undef getchar int getchar (void) {…} #undef getchar int getchar (void) {…}

Условная компиляция управляет ходом препроцессирования (выборочное включение) // ifndef - истина если не был Условная компиляция управляет ходом препроцессирования (выборочное включение) // ifndef - истина если не был опред.

► вычисляется предикат условия в #if (не должно sizeof и enum) ► если не ► вычисляется предикат условия в #if (не должно sizeof и enum) ► если не ноль, то будут включены все послед строки до #endif #else