Программирование >>  Инициализация объектов класса, структура 

1 ... 4 5 6 [ 7 ] 8 9 10 ... 395


#include <some file.h>

может быть указано двумя способами:

#include my file.h

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

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

блок программы до тех пор, пока некоторое условие не изменится с true на false.

int main() {

int iterations = 0; bool continue loop = true; while ( continue loop != false )

iterations++;

cout << кл б1л волнен << iterations << раз\n ,

if ( iterations == 5 ) continue loop = false;

return 0; Например:

В этом надуманном примере цикл while выполняется пять раз, до тех пор пока переменная iterations не получит значение 5 и переменная continue loop не станет равной false. Инструкция

iterations++;

увеличивает значение переменной iterations на единицу. (Инструкции цикла детально рассматриваются в главе 5.)

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

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

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



#define BOOKSTORE H

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

#ifndef 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<string> text;

while ( cin >> word )

#ifdef DEBUG

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

text.push back(word);

...

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

int main()

так:

string word;

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



int main()

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

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

string word; vector<string> text;

while ( cin >> word ) {

cout << Прочитано слово: text.push back(word);

<< word << \n ;

t.pus

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

$ CC -DDEBUG main.C

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

#idfef cplusplus

компиляция С++ программе! extern C ;

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

#endif

определены одновременно. Пример:

int main(int,int);

Другими полезными предопределенными константами (в данном случае лучше сказать

переменными) препроцессора являются LINE и FILE . Переменная LINE

содержит номер текущей компилируемой строки, а FILE - имя компилируемого

файла. Вот пример их использования:

vector<string> text;

while ( cin >> word )

text.push back(word);

...



1 ... 4 5 6 [ 7 ] 8 9 10 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика