Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Лекция 10. Условные директивы препроцессора



Заголовочный файл также может содержать директивы #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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...