🗊 Презентация Препроцессор языка Си. Лекция 25

Нажмите для полного просмотра!
Препроцессор языка Си. Лекция 25, слайд №1 Препроцессор языка Си. Лекция 25, слайд №2 Препроцессор языка Си. Лекция 25, слайд №3 Препроцессор языка Си. Лекция 25, слайд №4 Препроцессор языка Си. Лекция 25, слайд №5 Препроцессор языка Си. Лекция 25, слайд №6 Препроцессор языка Си. Лекция 25, слайд №7 Препроцессор языка Си. Лекция 25, слайд №8 Препроцессор языка Си. Лекция 25, слайд №9 Препроцессор языка Си. Лекция 25, слайд №10 Препроцессор языка Си. Лекция 25, слайд №11 Препроцессор языка Си. Лекция 25, слайд №12 Препроцессор языка Си. Лекция 25, слайд №13 Препроцессор языка Си. Лекция 25, слайд №14 Препроцессор языка Си. Лекция 25, слайд №15 Препроцессор языка Си. Лекция 25, слайд №16 Препроцессор языка Си. Лекция 25, слайд №17 Препроцессор языка Си. Лекция 25, слайд №18 Препроцессор языка Си. Лекция 25, слайд №19 Препроцессор языка Си. Лекция 25, слайд №20

Содержание

Вы можете ознакомиться и скачать презентацию на тему Препроцессор языка Си. Лекция 25. Доклад-сообщение содержит 20 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


препроцессор языка си лекция 25
Описание слайда:
препроцессор языка си лекция 25

Слайд 2


План лекции Препроцессор как часть компилятора Этапы работы и внутреннее устройство препроцессора Язык препроцессора языка Си Алгоритм работы...
Описание слайда:
План лекции Препроцессор как часть компилятора Этапы работы и внутреннее устройство препроцессора Язык препроцессора языка Си Алгоритм работы препроцессора языка Си Примеры

Слайд 3


Общие сведения о языке Си Dennis Ritchie Язык для разработки ОС UNIX 1969-1973, Bell Laboratories, США Стандарты ANSI (С89) С99 – //, описание...
Описание слайда:
Общие сведения о языке Си Dennis Ritchie Язык для разработки ОС UNIX 1969-1973, Bell Laboratories, США Стандарты ANSI (С89) С99 – //, описание переменных не в начале блока, массивы переменной длины С11 – параллелизм, полиморфизм

Слайд 4


Лексика языка Си Программа на Си -- одна или несколько единиц компиляции (файлов) Стадии работы компилятора Формирование лексем (в том числе работа...
Описание слайда:
Лексика языка Си Программа на Си -- одна или несколько единиц компиляции (файлов) Стадии работы компилятора Формирование лексем (в том числе работа препроцессора) Синтаксический анализ Семантический анализ Оптимизация Генерация кода

Слайд 5


Препроцессор языка Си Препроцессор – это интерпретатор специального языка преобразования текстов Препроцессор языка Си – это часть компилятора,...
Описание слайда:
Препроцессор языка Си Препроцессор – это интерпретатор специального языка преобразования текстов Препроцессор языка Си – это часть компилятора, преобразующая содержимое единицы компиляции в последовательность лексем языка Си Препроцессор GNU С -- библиотека Этапы работы препроцессора языка Си Замена триграфов Склеивание строк Удаление комментариев Обработка директив

Слайд 6


Триграфы языка Си Триграфами языка Си называются следующие последовательности символов, начинающиеся с ??
Описание слайда:
Триграфы языка Си Триграфами языка Си называются следующие последовательности символов, начинающиеся с ??

Слайд 7


Пример ??=include /* # */ int main(void) ??< /* { */ char n??(5??); /* [ и ] */ n??(4??) = '0' - (??-0 ??' 1 ??! 2); /* ~, ^ и| */...
Описание слайда:
Пример ??=include /* # */ int main(void) ??< /* { */ char n??(5??); /* [ и ] */ n??(4??) = '0' - (??-0 ??' 1 ??! 2); /* ~, ^ и| */ printf("%c??/n", n??(4??)); /* ??/ = \ */ return 0; ??>

Слайд 8


Склеивание строк, удаление комментариев Строка единицы компиляции, заканчивающаяся обратной наклонной чертой \, соединяется со следующей строкой...
Описание слайда:
Склеивание строк, удаление комментариев Строка единицы компиляции, заканчивающаяся обратной наклонной чертой \, соединяется со следующей строкой Символы единицы компиляции, образующие комментарий на языке Си, не включаются в выходную последовательность лексем языка Си

Слайд 9


Пример // Будет ли исполнена следующая строка????????????????/ a++; ??/ будет проинтерпретирован как '" в конце строки и продлит комментарий на...
Описание слайда:
Пример // Будет ли исполнена следующая строка????????????????/ a++; ??/ будет проинтерпретирован как '" в конце строки и продлит комментарий на следующую строку a++ будет воспринято как комментарий

Слайд 10


Директивы препроцессора Си Директивы препроцессора языка Си записываются на специальном языке Грамматика языка препроцессора языка Си отличается от...
Описание слайда:
Директивы препроцессора Си Директивы препроцессора языка Си записываются на специальном языке Грамматика языка препроцессора языка Си отличается от грамматики языка Си Строки единицы компиляции на языке препроцессора языка Си начинаются с символа # Все остальные строки единицы компиляции являются входными данными для препроцессора языка Си

Слайд 11


Внутреннее устройство препроцессора Вход -- последовательность байтов в строках единицы компиляции Выход -- последовательность лексем для компилятора...
Описание слайда:
Внутреннее устройство препроцессора Вход -- последовательность байтов в строках единицы компиляции Выход -- последовательность лексем для компилятора Таблица макросов Состояние препроцессора изменяемое директивами препроцессора Идентификатор макроса и цепочка лексем «правая часть макроса», на которую препроцессор заменяет этот идентификатор в процессе раскрытия Заполняется по ходу работы препроцессора в соответствии с директивами

Слайд 12


Константы, макросы, операции Константы Целые числа, символы, строки Записываются как соотв. константы в Си Макросы Записываются как идентификаторы в...
Описание слайда:
Константы, макросы, операции Константы Целые числа, символы, строки Записываются как соотв. константы в Си Макросы Записываются как идентификаторы в Си Предопределенные макросы __FILE__, __LINE__, __FUNCTION__, __TIME__ Арифметические, побитовые, логические операции Записываются как в языке Си Проверка наличия определения макроса defined имя_макроса

Слайд 13


Константные выражения Константным выражением языка препроцессора языка Си называется выражение, построенное по правилам языка Си из скобок ( и ) и...
Описание слайда:
Константные выражения Константным выражением языка препроцессора языка Си называется выражение, построенное по правилам языка Си из скобок ( и ) и констант, макросов и операций языка препроцессора языка Си

Слайд 14


Ключевые слова препроцессора Си define — определить макрос препроцессора undef — отменить текущее определение макроса include — вставить текст из...
Описание слайда:
Ключевые слова препроцессора Си define — определить макрос препроцессора undef — отменить текущее определение макроса include — вставить текст из указанного файла if — передать строки до соотв. elif/else/endif на компиляцию, если выражение истинно ifdef — то же, что if defined ifndef — то же, что if !defined else — передать строки до соотв. endif на компиляцию, если соотв. выражение ложно elif — то же, что else if endif — конец ветки условной компиляции line — сообщить компилятору указанные номер строки и имя файла вместо фактических error — завершить работу с ошибкой pragma — добавить в выходной поток лексем лексемы, зависящие от компилятора

Слайд 15


Препроцессор Си Пока входной поток байтов не пуст С = строка, полученная заменой триграфов, склейкой строк и удалением комментариев Если С начинается...
Описание слайда:
Препроцессор Си Пока входной поток байтов не пуст С = строка, полученная заменой триграфов, склейкой строк и удалением комментариев Если С начинается с #, то обработать директиву Иначе для каждой лексемы Л в С Если Л является макросом с определением Х, то положить во входной поток байтов "#undef Л Х #define Л Х " Включает обработку параметров макроса – след. слайд Иначе положить Л в выходной поток лексем

Слайд 16


Обработка директив #define макрос [ ( парам [, парам …] ) ] правая часть Добавить в таблицу макросов определение #undef макрос Удалить определение...
Описание слайда:
Обработка директив #define макрос [ ( парам [, парам …] ) ] правая часть Добавить в таблицу макросов определение #undef макрос Удалить определение #if константное выражение текст 0 #else текст 1 #endif Добавить во входной поток байтов текст 0, если выражение истинно, или текст 1, если выражение ложно #error сообщение Завершить компиляцию с сообщением

Слайд 17


Обработка директив #include < байты > #include " байты " Заменить #include на текст из файла с таким именем Две формы отличаются набором...
Описание слайда:
Обработка директив #include < байты > #include " байты " Заменить #include на текст из файла с таким именем Две формы отличаются набором директорий, в которых препроцессор ищет файл -- для < > дополнительно просматриваются директории с файлами заголовков, поставляемых вместе с ОС #include последовательность лексем Последовательность лексем должна раскрываться либо в < байты >, либо в " байты "

Слайд 18


Макросы с параметрами #define M(a,b,…) nextM Добавить в таблицу макросов замену M(a,b,…) -> nextM Если раскрываем M(A,B,…), то a, b, и т.д. в nextM...
Описание слайда:
Макросы с параметрами #define M(a,b,…) nextM Добавить в таблицу макросов замену M(a,b,…) -> nextM Если раскрываем M(A,B,…), то a, b, и т.д. в nextM будет заменено на A, В, и т.д. a##b – объединить a и b в одну лексему #a – строковая константа, значением которой является a #define max(x,y) ((x)

Слайд 19


Заключение Препроцессор как часть компилятора Этапы работы и внутреннее устройтсво препроцессора Язык препроцессора языка Си Алгоритм работы...
Описание слайда:
Заключение Препроцессор как часть компилятора Этапы работы и внутреннее устройтсво препроцессора Язык препроцессора языка Си Алгоритм работы препроцессора языка Си Примеры

Слайд 20


Препроцессор Си #if #if #elif #else #endif Вычисляем условия по порядку Когда получаем истину, помещаем во входной поток блок кода до следующей...
Описание слайда:
Препроцессор Си #if #if #elif #else #endif Вычисляем условия по порядку Когда получаем истину, помещаем во входной поток блок кода до следующей директивы #elif и/или #else могут отсутствовать Можно вложенные #if



Похожие презентации
Mypresentation.ru
Загрузить презентацию