Сайт STLport
Сайт STLport
Главная отличительная особенность STLport заключается в том, что эта модифицированная версия реализации STL от SGI (включая потоки ввода-вывода и т. д.) была перенесена более чем на 20 компиляторов. STLport, как и библиотека SGI, распространяется бесплатно. Если ваш код должен работать сразу на нескольких платформах, вы избавите себя от множества хлопот, если возьмете за основу унифицированную реализацию STLport и будете использовать ее со всеми компиляторами.
Большинство изменений кода SGI в реализации STLport связано с улучшением переносимости, однако STLport является единственной известной мне реализацией, в которой предусмотрен «отладочный режим» для диагностики случаев неправильного использования STL — компилируемых, но приводящих к непредсказуемым последствиям во время работы программы. Например, в совете 30 распространенная ошибка записи за концом контейнера поясняется следующим примером:
int transmogrify(int х); // Функция вычисляет некое новое значение
// по переданному параметру х
vector<int> values;
// Заполнение вектора values данными
vector<int> results;
transform(values.begin(), // Попытка записи за концом results! values.end(),
results.end,
transmogrify);
Этот фрагмент компилируется, но во время выполнения работает непредсказуемо. Если вам повезет, проблемы возникнут при вызове transform, и отладка будет относительно элементарной. Гораздо хуже, если вызов transform испортит данные где-то в другом месте адресного пространства, но это обнаружится лишь позднее. В этом случае определение причины порчи данных становится задачей — как бы выразиться? — весьма нетривиальной.
Отладочный режим STLport значительно упрощает эту задачу. При выполнении приведенного выше вызова transform выдается следующее сообщение (предполагается, что реализация STLport установлена в каталоге C:STLport):
C:STLportstlportstldebug\_iterator.h:265 STL assertion failure: _Dereferenceable(*this)
На этом программа прекращает работу, поскольку в случае ошибки отладочный режим STLport вызывает abort. Если вы предпочитаете, чтобы вместо этого инициировалось исключение, STLport можно настроить и на этот режим.
Честно говоря, приведенное сообщение об ошибке менее понятно, чем хотелось бы, а имя файла и номер строки относятся к внутренней проверке условия STL, а не к строке с вызовом transform, но это все же значительно лучше пропущенного вызова transform и последующих попыток разобраться в причинах разрушения структур данных. В отладочном режиме STLport остается лишь запустить программу-отладчик, вернуться по содержимому стека к написанному вами коду и определить, что же произошло. Строка, содержащая ошибку, обычно находится достаточно легко.
Отладочный режим STLport распознает широкий спектр стандартных ошибок, в том числе передачу алгоритмам недопустимых интервалов, попытки чтения из пустого контейнера, передачу итератора одного контейнера в качестве аргумента функции другого контейнера и т. д. Волшебство основано на взаимном отслеживании итераторов и контейнеров. При наличии двух итераторов это позволяет проверить, принадлежат ли они одному контейнеру, а при модификации контейнера — определить, какие итераторы становятся недействительными.
В отладочном режиме реализация STLport использует специальные реализации итераторов, поэтому итераторы vector и string являются объектами классов, а не низкоуровневыми указателями. Таким образом, использование STLport и компиляция в отладочном режиме помогают убедиться в том, что ваша программа не игнорирует различия между указателями и итераторами для соответствующих типов контейнеров. Одной этой причины может оказаться достаточно для того, чтобы познакомиться с отладочным режимом STLport.
•
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Сайт работает на вас
Сайт работает на вас Сайт может приносить деньги. И это не какие-то там размытые мечты. Это реальность, осознав которую, многие пользователи уже сейчас получают хорошие прибыли с помощью своих интернет-представительств.В данном подразделе я не буду перечислять идеи и
Сайт «Сковородник»
Сайт «Сковородник» Введем в поисковую строку Яндекса запрос сайт о кулинарии и получим в выдаче 54 млн ссылок. На первых местах, как и обычно, стоят самые важные, с точки зрения Яндекса, сайты. Можно посетить любые из них, чтобы подивиться невероятному количеству рецептов.
Сайт-визитка
Сайт-визитка Такой сайт состоит из небольшого количества страниц, где предоставлена самая необходимая, но достаточная информация о фирме. Дизайн сайта, как правило, выполнен с учетом фирменного стиля организации. Здесь есть разделы, рассказывающие о самой компании, об
Информационный сайт
Информационный сайт Главной задачей любого информационного сайта является предоставление полной и, что немаловажно, регулярно обновляемой информации. К ним относятся, например, правительственные, образовательные, новостные сайты.Информационные сайты отличаются
Персональный сайт
Персональный сайт Ну, тут уж и ежу понятно, что создают такие сайты для себя такие же люди, как и мы с вами. Так что и тематика, и наполнение, и оформление сайта — все зависит от умения автора, его возможностей и воображения. Тут уж никаких границ не существует. Рис. П1.4.
1.1. Веб-система > веб-сайт
1.1. Веб-система > веб-сайт Буквально за несколько лет сфера веб-разработок прошла путь эволюции от примитивных статичных веб-страничек (текст + картинки) до многофункциональных интегрированных с другими приложениями веб-систем. Появилась реальная возможность «вынести»
19.2.5.3. Создайте Web-сайт
19.2.5.3. Создайте Web-сайт Если разработчик намеревается создать вокруг своего проекта прочное сообщество пользователей или разработчиков, то должен существовать Web-сайт проекта. Рассмотрим стандартные разделы сайта проекта.• Хартия проекта (почему он существует, целевая
19.2.5.3. Создайте Web-сайт
19.2.5.3. Создайте Web-сайт Если разработчик намеревается создать вокруг своего проекта прочное сообщество пользователей или разработчиков, то должен существовать Web-сайт проекта. Рассмотрим стандартные разделы сайта проекта.• Хартия проекта (почему он существует, целевая
Сайт SGI STL
Сайт SGI STL Web-сайт SGI STL не случайно находится в начале списка. На нем имеется подробная документация по всем компонентам STL. Многие программисты рассматривают его как основной источник электронной документации незав4исимо от используемой платформы STL. Документацию собрал
Сайт Boost
Сайт Boost В 1997 году завершился процесс, приведший к появлению Международного стандарта С++. Многие участники были разочарованы тем, что возможности, за которые они выступали, не прошли окончательный отбор. Некоторые из этих участников были членами самого Комитета, поэтому
Web-сайт
Web-сайт Подобная книга не принесла бы много пользы, если бы вам пришлось набирать листинг каждой исходной программы вручную. Структура роликов Flash, множество различных элементов которых – клипы, кнопки и графические образы – необходимо поместить в строго определенное
Сайт «в живую»
Сайт «в живую» Чтобы получить возможность работать с только что созданным шаблоном в Joomla!, необходимо создать файл templateDetails.xml. Базовая версия без картинок выглядит так:<install version="1.5"