Утилита Cpp32. exe создает файл, в котором все #include файлы и #define макросы будут расширены. Часто нет необходимости просматривать результаты работы препроцессора, однако в целях отладки такой просмотр может оказаться полезным.
Примечание: Найти утилиты Cpp32.exe можно в среде CBuilder ver.6:
Cpp32.exe -> c:Program FilesBorlandCBuilder6Bin
Cpp32.txt -> c:Program FilesBorlandCBuilder6ExamplesWinTools
Часто, когда компилятор находит ошибку внутри макро или во включаемом файле, можно получить больше информации в просмотре файла препроцессора, чем в выдаваемом компилятором сообщении.
Препроцессор может работать из командной строки. Каждый выходной файл, полученный с помощью программы Сpp32.exe имеет такое же имя, как и входной, но с расширением .i. Он расположен в текущем каталоге.
Этот выходной файл является текстовым и содержит каждую строку исходного или включаемого файла. Любые директивы исходного файла удаляются вместе с блоками «Нет» условных директив. Каждая строка текста будет содержать имя файла и номер строки из этого файла. Любой макрос будет заменен текстом расширения.
Выходной файл Cрр32 не может компилироваться из-за наличия имени файла и номера строки, сопровождающей каждое предложение кода, тем не менее, использование опции -P- даст возможность создать файл без нумерации строк. В этом случае выходной файл Срр32 можно компилировать.
Утилита Cрр32.exe имеет следующий формат:
Cрр32 [ options ] file[s]
Приведем некоторые опции Cрр32:
· Ax |
– специфицирует язык расширений; |
· C |
– разрешает вложенные комментарии; |
· Dname |
– определяет макро; |
· gnnn |
– остановка после N предупреждений; |
· innn |
– максимальная длина идентификатора; |
· Ipath |
– путь к каталогу включаемых файлов; |
· jnnn |
– остановка после N ошибок; |
· npath |
– путь к каталогу выходного файла; |
· ofilename |
– имя выходного файла. |
Чтобы просмотреть полный список опций нужно запустить препроцессор с опцией –h (cpp32.exe –h).
Пример
Дан следующий исходный код, записанный в файле ZADACHA6.CPP:
# include <iostream.h>
# include <stdio.h>
# include <conio.h>
# define MAXTITL 40
# define MAXAUTL 30
# define MAXBKS 3
struct book
{
char title [MAXTITL];
char author [MAXAUTL];
float value;
};
int main (void)
{
book libry [MAXBKS];
clrscr ();
int count=0;
int index;
printf (" Введите название книгиn");
while (count<MAXBKS&&
gets(libry[count].title)!=NULL
&&libry [count].title[0]!=’