Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта. Благодаря им мы улучшаем сайт!
Принять и закрыть

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

Читать: C++ для начинающих - Уолтер Липпман на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:

#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

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

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

#include cassert

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

using namespace std;

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

#include assert.h

то надобность в using-директиве отпадает: имя assert() будет видно и так . (Пространства имен используются разработчиками библиотек для предотвращения засорения глобального пространства имен. В разделе 8.5 эта тема рассматривается более подробно.)

1.4. Немного о комментариях

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

В С++ есть два типа комментариев. Один – такой же, как и в С, использующий символы /* для обозначения начала и */ для обозначения конца комментария. Между этими парами символов может находиться любой текст, занимающий одну или несколько строк: вся последовательность между /* и */ считается комментарием. Например:

/*

* Это первое знакомство с определением класса в C++.

* Классы используются как в объектном, так и в

* объектно-ориентированном программировании. Реализация

* класса Screen представлена в главе 13.

*/

class Screen {

/* Это называется телом класса */

public:

void home(); /* переместить курсор в позицию 0,0 */

void refresh ();/* перерисовать экран */

private:

/* Классы поддерживают "сокрытие информации" */

/* Сокрытие информации ограничивает доступ из */

/* программы к внутреннему представлению класса */

/* (его данным). Для этого используется метка */

/* "private:" */

int height, width;

}

Слишком большое число комментариев, перемежающихся с кодом программы, может ухудшить читаемость текста. Например, объявления переменных width и height в данном тексте окружены комментариями и почти не заметны. Рекомендуется писать развернутое объяснение перед блоком текста. Как и любая программная документация, комментарии должны обновляться в процессе модификации кода. Увы, нередко случается, что они относятся к устаревшей версии.

Комментарии в стиле С не могут быть вложенными. Попробуйте откомпилировать нижеследующую программу в своей системе. Большинство компиляторов посчитают ее ошибочной:

#include iostream

/* комментарии /* */ не могут быть вложенными.

* Строку "не вкладываются" компилятор рассматривает,

* как часть программы. Это же относится к данной и следующей строкам

*/

int main() {

cout "Здравствуй, мир\n";

}

Один из способов решить проблему вложенных комментариев – поставить пробел между звездочкой и косой чертой:

/* * /

Последовательность символов */ считается концом комментария только в том случае, если между ними нет пробела.

Второй тип комментариев – однострочный. Он начинается последовательностью символов // и ограничен концом строки. Часть строки вправо от двух косых черт игнорируется компилятором. Вот пример нашего класса Screen с использованием двух строчных комментариев:

/*

* Первое знакомство с определением класса в C++.

* Классы используются как в объектном, так и в

* объектно-ориентированном программировании. Реализация

* класса Screen представлена в главе 13.

*/

class Screen {

// Это называется телом класса

public:

void home(); // переместить курсор в позицию 0,0

void refresh (); // перерисовать экран

private:

/* Классы поддерживают "сокрытие информации". */

/* Сокрытие информации ограничивает доступ из */

/* программы к внутреннему представлению класса */

/* (его данным). Для этого используется метка */

/* "private:" */

int height, width;

}

Обычно в программе употребляют сразу оба типа комментариев. Строчные комментарии удобны для кратких пояснений – в одну или полстроки, а комментарии, ограниченные /* и */, лучше подходят для развернутых многострочных пояснений.



Поделиться книгой:

На главную
Назад