- •Многофайловый проект
- •Int count_dig(int a) {
- •Int del_first_dig(int& a) {
- •Void del_last_dig(int& a);
- •Int del_first_dig(int& a);
- •Int count_dig(int a) {
- •Void del_last_dig(int& a) {
- •Int del_first_dig(int& a) {
- •Int count_dig(int a);
- •Void del_last_dig(int& a);
- •Int del_first_dig(int& a);
- •Int main() {
- •Int main() {
- •Int main() {
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-файлы группы взаимосвязанных функций.