90 ______ _____ ____________Часть II. Программирование на C++

Иногда продуманное расположение элементов сокращает количество необходимой работы. Представьте, например, что вы хотите включить в файл Foo.cpp заголовок foo.h. Если "сторожевые" директивы (см. раздел "Директивы #ifdef, #else и #endif") будут размещены в программном файле, как здесь:

// FOO.CPP — Программный модуль

#ifndef _FOO_H

#define _FOO_H.

#include "foo.h"

#endif . ' .

то вам придется также вставлять их в каждый модуль, которому нужен файл foo.h. С другой стороны, поместив эти три строки в заголовочный файл так, чтобы они обрамляли его содержимое, вы напишете их только один раз. Оба варианта работают идентично, но в последнем случае отпадает необходимость писать одно и то же несколько раз и, соответственно, уменьшается вероятность забыть это сделать. И тот и другой равно помогают избежать повторных объявлений, но размещение директив-сторожей прямо в заголовке более корректно.

Выявление ошибок

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

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

Легко заметить, что в среде Borland C++ 5 цвет и шрифт текста программ меняются в зависимости от смысла. При стандартных установках среды комментарии изображаются курсивом голубого цвета, ключевые слова черные и полужирные, директивы препроцессора зеленые. Вы сразу увидите, если цвет и шрифт будут отличаться от ожидаемых, и это моментально заставит вас насторожиться — вероятно, имеет место синтаксическая ошибка. Даже не надо запускать компиляцию, чтобы локализовать ошибку в "неправильно выглядящем" фрагменте кода.

Ошибки компиляции благодаря развитой системе сообщений компилятора, как правило, легче выявлять, чем ошибки исполнения. Ошибки компоновки искать несколько труднее, поэтому основные усилия следует приложить к