С++ для начинающих





Скачать 17.65 Mb.
НазваниеС++ для начинающих
страница3/198
Дата публикации21.08.2013
Размер17.65 Mb.
ТипКнига
100-bal.ru > Информатика > Книга
1   2   3   4   5   6   7   8   9   ...   198

1.3. Директивы препроцессора


Заголовочные файлы включаются в текст программы с помощью директивы препроцессора #include. Директивы препроцессора начинаются со знака “диез” (#), который должен быть самым первым символом строки. Программа, которая обрабатывает эти директивы, называется препроцессором (в современных компиляторах препроцессор обычно является частью самого компилятора).

Директива #include включает в программу содержимое указанного файла. Имя файла может быть указано двумя способами:

#include


#include "my_file.h"

Если имя файла заключено в угловые скобки (<>), считается, что нам нужен некий стандартный заголовочный файл, и компилятор ищет этот файл в предопределенных местах. (Способ определения этих мест сильно различается для разных платформ и реализаций.) Двойные кавычки означают, что заголовочный файл – пользовательский, и его поиск начинается с того каталога, где находится исходный текст программы.

Заголовочный файл также может содержать директивы #include. Поэтому иногда трудно понять, какие же конкретно заголовочные файлы включены в данный исходный текст, и некоторые заголовочные файлы могут оказаться включенными несколько раз. Избежать этого позволяют условные директивы препроцессора. Рассмотрим пример:

#ifndef BOOKSTORE_H


#define BOOKSTORE_H

/* содержимое файла bookstore.h */


#endif

Условная директива #ifndef проверяет, не было ли значение BOOKSTORE_H определено ранее. (BOOKSTORE_H – это константа препроцессора; такие константы принято писать заглавными буквами.) Препроцессор обрабатывает следующие строки вплоть до директивы #endif. В противном случае он пропускает строки от #ifndef до # endif.

Директива

#define BOOKSTORE_H

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

Другим распространенным примером применения условных директив препроцессора является включение в текст программы отладочной информации. Например:

int main()

{

#ifdef DEBUG

cout << "Начало выполнения main()\n";

#endif
string word;

vector text;
while ( cin >> word )

{

#ifdef DEBUG

cout << "Прочитано слово: " << word << "\n";

#endif

text.push_back(word);

}

// ...

}

Если константа DEBUG не определена, результирующий текст программы будет выглядеть так:

int main()


{
string word;

vector text;
while ( cin >> word )

{

text.push_back(word);

}

// ...


}

В противном случае мы получим:

int main()


{

cout << "Начало выполнения main()\n";
string word;

vector text;
while ( cin >> word )

{

cout << "Прочитано слово: " << word << "\n";

text.push_back(word);

}

// ...


}

Константа препроцессора может быть определена в командной строке при вызове компилятора с помощью опции -D (в различных реализациях эта опция может называться по-разному). Для UNIX-систем вызов компилятора с определением препроцессорной константы DEBUG выглядит следующим образом:

$ CC -DDEBUG main.C

Есть константы, которые автоматически определяются компилятором. Например, мы можем узнать, компилируем ли мы С++ или С программу. Для С++ программы автоматически определяется константа __cplusplus (два подчеркивания). Для стандартного С определяется __STDC__. Естественно, обе константы не могут быть определены одновременно. Пример:

#idfef __cplusplus

// компиляция С++ программы

extern "C";

// extern "C" объясняется в главе 7

#endif
int main(int,int);

Другими полезными предопределенными константами (в данном случае лучше сказать переменными) препроцессора являются __LINE__ и __FILE__. Переменная __LINE__ содержит номер текущей компилируемой строки, а __FILE__ – имя компилируемого файла. Вот пример их использования:

if ( element_count == 0 )


cerr << "Ошибка. Файл: " << __FILE__

<< " Строка: " << __LINE__


<< "element_count не может быть 0";

Две константы __DATE__ и __TIME__ содержат дату и время компиляции.

Стандартная библиотека С предоставляет полезный макрос assert(), который проверяет некоторое условие и в случае, если оно не выполняется, выдает диагностическое сообщение и аварийно завершает программу. Мы будем часто пользоваться этим полезным макросом в последующих примерах программ. Для его применения следует включить в программу директиву

#include

assert.h – это заголовочный файл стандартной библиотеки С. Программа на C++ может ссылаться на заголовочный файл как по его имени, принятому в C, так и по имени, принятому в C++. В стандартной библиотеке С++ этот файл носит имя cassert. Имя заголовочного файла в библиотеке С++ отличается от имени соответствующего файла для С отсутствием расширения .h и подставленной спереди буквой c (выше уже упоминалось, что в заголовочных файлах для C++ расширения не употребляются, поскольку они могут зависеть от реализации).

Эффект от использования директивы препроцессора #include зависит от типа заголовочного файла. Инструкция

#include

включает в текст программы содержимое файла cassert. Но поскольку все имена, используемые в стандартной библиотеке С++, определены в пространстве std, имя assert() будет невидимо до тех пор, пока мы явно не сделаем его видимым с помощью следующей using-директивы:

using namespace std;

Если же мы включаем в программу заголовочный файл для библиотеки С

#include

то надобность в using-директиве отпадает: имя assert() будет видно и так2. (Пространства имен используются разработчиками библиотек для предотвращения засорения глобального пространства имен. В разделе 8.5 эта тема рассматривается более подробно.)
1   2   3   4   5   6   7   8   9   ...   198

Похожие:

С++ для начинающих iconКалендарно-Тематическое планирование элективного курса «Компьютер для начинающих» для 5 класс
Программа элективного курса «Компьютер для начинающих» для 5 класса (Рекомендована Экспертным Советом му «Управление образования...
С++ для начинающих iconПособие на каждый день для начинающих студентов Губкинского университета...
У нас так принято. Пособие на каждый день для начинающих студентов Губкинского университета и не только для них. Авторы: доцент Л....
С++ для начинающих iconСписок используемой литературы на тему «Компьютерная графика и Анимация»...
Издательство: Педагогика–пресс «Информатика: Энциклопедический словарь для начинающих.» – 1994 – С. 121-154
С++ для начинающих iconПояснительная записка Программа рассчитана на 30 час ( 2 часа в неделю)....
Учебник английского языка «Страна чудес Wonderland Pre-Junior для начинающих» Кристина Бруни Эдинбург, «Пирсон», 2012
С++ для начинающих iconМетодические рекомендации для учителей, начинающих работать по курсу...

С++ для начинающих iconНик Бостром. Рассуждение о Конце Света для начинающих. Алексей Турчин
Оценочные средства для текущего контроля успеваемости, промежуточной итоговой аттестации студентов д/о и з/о
С++ для начинающих iconПрограмма по формированию навыков безопасного поведения на дорогах...
Уровень подготовленности: для начинающих; для среднего и любого уровня подготовленности; для подготовленных
С++ для начинающих iconRu Персональный компьютер, или "Азбука pc" для начинающих http
Олимпиады и контрольно-измерительные материалы по информатике и ит олимпиадная информатика
С++ для начинающих iconНемецкий язык для начинающих
С 34 Лингвострановедение и страноведение: учебно-методический комплекс / А. А. Сибгатуллина – Елабуга: Изд-во егпу, 2010. – 24с
С++ для начинающих iconПрограмма по формированию навыков безопасного поведения на дорогах...
Курс для начинающих 1 (А1): для абсолютных новичков. Разговор для первой ориентации,ситуации повседневной жизни,грамматических структур...
С++ для начинающих iconПрограмма по формированию навыков безопасного поведения на дорогах...
...
С++ для начинающих iconПрограмма по формированию навыков безопасного поведения на дорогах...
...
С++ для начинающих iconПрограмма по формированию навыков безопасного поведения на дорогах...
...
С++ для начинающих iconПособие на каждый день для начинающих студентов Нефтегаза и не только для них Тюмень
Использовано пособие «У нас так принято!» Российского государственного университета нефти и газа им. Губкина
С++ для начинающих iconПоложение о XV городской конференции учащихся «Первая ступень в науку»
Создание условий для формирования познавательного интереса у начинающих исследователей в различных отраслях науки
С++ для начинающих iconПрограмма по формированию навыков безопасного поведения на дорогах...
Аэробика с использованием степ платформы. Рекомендуется для начинающих. Продолжительность 45 минут


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск