Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Заголовочный файл также может содержать директивы #include. Поэтому иногда трудно понять, какие же конкретно заголовочные файлы включены в данный исходный текст, и некоторые заголовочные файлы могут оказаться включенными несколько раз. Избежать этого позволяют условные директивы препроцессора. Рассмотрим пример:
Файл main.cpp
#include <stdio.h>
#include "fm.h"
int main(int argc, char* argv[])
{
int a=1, b=2;
printf("Min from %d and %d is %d\n", a, b, fm(a,b));
getchar();
return 0;
}
Файл fm.h
#ifndef __FM_H
#define __FM_H
int fm(int, int);
#endif
Файл fm.cpp
#include "fm.h"
int fm(int x, int y)
{
return x<y?x:y;
}
Данный проект состоит из трех файлов main.cpp — основной, fm.h — содержащий прототип функции fm (поиск минимума двух целых чисел), fm.cpp — содержащий определение функции fm.
В файле fm.h условная директива #ifndef проверяет, не было ли значение __FM_H определено ранее. (__FM_H – это константа препроцессора; такие константы принято писать заглавными буквами.) Препроцессор обрабатывает следующие строки вплоть до директивы #endif. В противном случае он пропускает строки от #ifndef до #endif.
Директива #define __FM_H определяет константу препроцессора __FM_H. Поместив эту директиву непосредственно после директивы #ifndef, мы можем гарантировать, что содержательная часть заголовочного файла fm.h будет включена в исходный текст только один раз, сколько бы раз ни включался в текст сам этот файл.
Примечание: нужно обязательно включить fm.cpp в проект через менеджер проекта (View-Project manager или Ctrl-Alt-F11) или File-New-C_File.
Другие условные директивы — #if, #elif, #else, #ifdef — самостоятельно.
Дата публикования: 2015-01-13; Прочитано: 267 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!