progs.biz  
Начало>C/C++>Основы C++>Урок 6
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

И. Портянкин. Swing. Эффектные пользовательские интерфейсы
И. Портянкин. Swing. Эффектные пользовательские интерфейсы
Заказать на Озоне



Яндекс-цитирования

C/C++
Урок 6. Директивы препроцессора

Мы уже сталкивались с одной директивой препроцессора в уроке 4. Сейчас мы обсудим, что такое.

До компиляция (т. е. превращение в машинные коды) вашей программы происходят некоторые действия - а именно сначала выполняются так называемые директивы препроцессора, а уже потом - непосредственно компиляция. Директивы препроцессора могут, например, включать в файл вашей программы другие файлы (это мы делаем с помощью директивы #include), определять некоторые константы (директива #define) и многое другое.

Важно понимать, что все директивы препроцессора выполняются до этапа компиляции. После выполнения директив препроцессора текст вашей программы будет изменен (не в исходном файле, конечно - там все как было, так и останется).

Перед любой директивой препрцессора пишется знак #.

Давайте немного приоткроем покров над тайной директив препроцессора на маленьком примере. Этот пример будет специфичен для Visual C++, но это не должно нас особенно тревожить - сейчас нам важно просто понять, как это все работает. Итак, создайте на Visual C++ новый проект для консольного приложения (для сего смотрите урок 1 в разделе по Visual C++ 6). Для файла *.cpp задайте имя test.cpp. В качестве текста программы введите

#include "test2.h"
#define pi 3.14
void main()
{
    float z=2*pi;
}

Пока текст нас не слишком должен волновать. Если не все понимаете в тексте - не беда. Принцип здесь такой - #include влючает указанный файл в наш файл. У нас это файл test2.h. Создайте его (например в Блокноте) в той же папке, где находятся все остальные файлы вашего проекта. В нем напечатайте следующий текст (на самом деле можно напечатать все что угодно - это не принципиально):

struct v{
    int x, y;
};

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

Теперь для просмотра того, что получается после выполнения директив препроцессора, измените настройки нашего проекта. Нажимайте Alt+F7 (или меню Project и далее Settings) и переходим на вкладку C/C++. В ней меняем содержимое окошка Project Options:

Настройки проекта.

Из этого окошка все удалите, и напечатайте там

/MLd /Fo"Debug/" /P

Пока мы это обсуждать не будем, отметим только, что с такими параметрами вы получите в папке проекта файл с результатом работы препроцессора. Закройте окно настроек нажав на OK.

Компилируем программу (клавиша F7). В папке с файлами проекта появится файл test.i со следующим текстом:

#line 1 "D:\\_programming\\cpp\\test\\test.cpp"
#line 1 "D:\\_programming\\cpp\\test\\test2.h"
struct v{
    int x, y;
};
#line 2 "D:\\_programming\\cpp\\test\\test.cpp"

void main()
{
    float z=2*3.14;
}

Как вы видите, препроцессор поработал - вставил файл test2.h в наш файл и заменил pi на значение константы:

    ...
    float z=2*3.14;
    

Так что работу препроцессера мы немного посмотрели.

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев