Читаем QT 4: программирование GUI на С++ полностью

• Ради удобства препроцессор воспринимает #ifdef X и #ifndef X как синонимы #if defined(X) и #if !defined(X). Для пpeдoтвpaщeния мнoгoкpaтныx включeний заголовочного файла мы окружаем его содержимое следующими директивами:

#ifndef MYHEADERFILE_H

#define MYHEADERFILE_H

#endif

При первом включении заголовочного файла символ MYHEADERFILE_H оказывается неопределенным, поэтому компилятор обрабатывает программный код, заключенный между директивами #ifndef и #endif. При повторном и последующих включениях заголовочного файла символ MYHEADERFILE_H оказывается определенным, поэтому весь блок #ifndef … #endif пропускается.

• Директива #errоr генерирует на этапе компиляции определенное пользователем сообщение об ошибке. Эта директива часто используется в комбинации с директивами условной компиляции для вывода сообщения о возникновении недопустимого условия. Например:

class UniChar

{

public:

#if BYTE_ORDER == BIG_ENDIAN

uchar row;

uchar cell;

#elif BYTE_ORDER == LITTLE_ENDIAN

uchar cell;

uchar row;

#else

#error "BYTE_ORDER must be BIG_ENDIAN or LITTLE_ENDIAN"

#endif

};

В отличие от большинства других конструкций С++, в которых недопустимы пробельные символы, препроцессорные директивы должны быть единственными в строке и не должны содержать точку с запятой. Слишком длинные директивы можно разбивать на несколько строк, заканчивая каждую строку, кроме последней, обратной наклонной чертой.

<p>Стандартная библиотека С++</p>

В данном разделе мы кратко рассмотрим стандартную библиотеку С++. На рис. Б.З приводится список базовых заголовочных файлов С++:

шаблонный класс для представления последовательностей битов фиксированной длины,

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

типы и функции, относящиеся к обработке исключений,

шаблонный класс, определяющий свойства числовых типов,

классы и функции, относящиеся к локализации,

функции, управляющие динамическим распределением памяти,

заранее определенные типы исключений для вывода сообщений об ошибках,

шаблонный строковый контейнер и свойства символов,

класс, предоставляющий основную метаинформацию о типах,

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

Заголовочные файлы , , и поддерживают возможности языка С++; например, позволяет проверять возможности поддержки компилятором целочисленной арифметики и арифметики чисел с плавающей точкой, a предлагает основные средства анализа информации о типах. Другие заголовочные файлы предоставляют часто используемые классы, в том числе класс строки и тип комплексных чисел. Функциональность, предлагаемая заголовочными файлами , , и , свободно перекрывается в Qt классами QBitArray, QLocale, QString и QMetaObject.

Стандартный С++ также включает ряд заголовочных файлов, обеспечивающих ввод—вывод (см. рис. Б.4):

шаблонные классы, манипулирующие внешними файлами,

манипуляторы потоков ввода—вывода, принимающие один аргумент,

шаблонный базовый класс потоков ввода—вывода,

предварительные объявления нескольких шаблонных классов потоков ввода—вывода,

стандартные потоки ввода—вывода (cin, cout, cerr, ctog),

шаблонный класс, управляющий вводом из буфера потока,

шаблонный класс, управляющий выводом в буфер потока,

шаблонные классы, связывающие буферы потоков со строками,

шаблонные классы, обеспечивающие буфер для операций ввода—вывода,

классы для выполнения операций потокового ввода-вывода с массивами символов.

Классы стандартного ввода—вывода проектировались в 80-х годах и обладают излишней сложностью, что сильно затрудняет их понимание, причем настолько, что этой теме были посвящены целые книги. Кроме того, программист остается наедине с ящиком Пандоры неразрешенных проблем, связанных с кодировкой символов и зависимого от платформы двоичного представления элементарных типов данных.

В главе 12 («Ввод—вывод») представлены соответствующие классы Qt, обеспечивающие ввод—вывод символов в кодировке Unicode, а также большой набор национальных кодировок и абстракцию независимого от платформы хранения двоичных данных. Qt—классы ввода—вывода формируют основу поддержки межпроцессной связи, работы с сетями и XML. Qt—классы двоичных и текстовых потоков можно очень легко расширить для работы с пользовательскими типами данных.

В начале 90-х годов была введена стандартная библиотека шаблонов (Standard Template Library — STL), представляющая собой набор шаблонных классов-контейнеров, итераторов и алгоритмов, которые вошли в стандарт ISO С++ в последний момент. На рис. Б.5 приводится список заголовочных файлов библиотеки STL:

шаблонные функции общего назначения,

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT