Добавил:
t.me Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 семестр / Многофайловые программы в С++.docx
Скачиваний:
2
Добавлен:
16.07.2023
Размер:
46.53 Кб
Скачать

Int main() {

int n,k;

cout<<"Input n and k"<<endl;

cin>>n>>k;

int m=n;//сохраним копию числа

int sum=0;

while (m){

int dig = m % 10;

sum+=power(dig,k);

m/=10;

}

cout<<"result = "<<(sum==n)<<endl;

return 0;

}

Листинг файла functions.h.

int power(int, int);

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

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

Принцип единственного определения в С++: объявлений может быть сколько угодно, но определение должно быть только одно.

Чтобы предотвратить ошибки при многократном включении заголовочного файла, необходимо использовать специальные директивы препроцессора: ifndef, endif, define.

В каждом заголовочном файле следует сначала проверить, не был ли этот заголовочный файл уже включен в многофайловый проект. Это делается при помощи препроцессорного флага. Проверка «установлен ли флаг» задается директивой ifndef имя флага. Если флаг не установлен, значит, код заголовочного файла еще не включался. В этом случае флаг устанавливается директивой define имя флага, и включаются объявления, расположенные до директивы endif. Если флаг уже установлен, то код до директивы endif игнорируется.

Примерный формат заголовочного файла:

#ifndef HEADER_FLAG

#define HEADER_FLAG

// необходимые объявления

#endif // HEADER_FLAG

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

Например, для файла с именем functions.h можно, следуя данному правилу, получить имя FUNCTIONS_H.

#ifndef FUNCTIONS_H

#define FUNCTIONS_H

int power(int, int);

#endif // FUNCTIONS_H

Рекомендуется разбивать большой код на относительно независимые части и объединять в cpp-файлы группы взаимосвязанных функций.

13