Вход/Регистрация
QT 4: программирование GUI на С++
вернуться

Саммерфилд Марк

Шрифт:

#endif

• Ради удобства препроцессор воспринимает #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

};

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

Стандартная библиотека С++

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

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

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

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

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

• <locale> — классы и функции, относящиеся к локализации,

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

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

• <string> — шаблонный строковый контейнер и свойства символов,

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Читать дальше
  • 1
  • ...
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: