Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по C/C++

  Все выпуски  

Уроки по C/C++


Информационный Канал Subscribe.Ru

C/C++. Уроки с сайта http://progs.biz

Рассылка №4

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

Полные версии уроков (с картинками) можно найти по адресам
Урок 6. Директивы препроцессора.

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;
    

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

Наверх

Рассылки сайта progs.biz:

Рассылки Subscribe.Ru
Обзор книг по программированию

Обзор новых книг по программированию. Включает книги как по традиционному программированию (Visual C++, Delphi, Visual Basic, C#, Java,...), так и по WEB-программированию (JavaScript, PHP, ASP, ASP.NET, Perl,...). Кроме того, предполагается обзор книг по компьютерным сетям, безопасности, сертификации и др.


Copyright Алексеев Игорь, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное