Реферат: Препроцессор языка C.

начинаются с символа подчеркивания. Поэтому опция '-ansi' запрещает

определение этих символов.

Это приводит к тому, что опция '-ansi' становится бесполезной, так как

большое количество программ зависит от нестандартных заранее определенных

символов. Даже системные подключамые файлы проверяют их значения и

генерируют неправильные объявления в случае если требуемые имена не

определены. В результате очень мало программ компилируется с опцией '-ansi'.

Что же нужно сделать в ANSI C программе для того, чтобы проверить тип

используемого компьютера?

Для этой цели GNU C предоставляет параллельную серию символов, имена

которых состоят из обычных символов с добавлением строки '__' с начала и

с конца. Таким образом символ '__vax__' используется на системах Vax, и

так далее.

Набор нестандартных заранее определенных символов в GNU C препроцессоре

изменяется (при компиляции самого компилятора) с помощью макроса

'CPP_PREDEFINES', которым является строка, состоящая из опций '-D',

разделенных пробелами. Например, на системе Sun 3 используется следующее

макроопределение:

#define CPP_PREDEFINES "-Dmc68000 -Dsun -Dunix -Dm68k"

Этот макрос обычно указывается в файле 'tm.h'.

4.4. Стрингификация

"Стрингификация" означает преобразование фрагмента кода в строковую

константу, которая содержит текст этого фрагмента кода. Например, в результате

стрингификации 'foo (z)' получается '"foo (z)"'.

В С препроцессоре, стрингификация является опцией, используемой при

замене аргументов в макросе макроопределением. При появлении имени аргумента

в теле макроопределения, символ '#' перед именем аргумента указывает на

стрингификацию соответствующего аргумента при его подстановке в этом месте

макроопределения. Этот же аргумент может быть заменен в другом месте

К-во Просмотров: 662
Бесплатно скачать Реферат: Препроцессор языка C.