Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
S_otvety_na_ekzamen.doc
Скачиваний:
2
Добавлен:
14.04.2019
Размер:
130.56 Кб
Скачать

46.Директива препроцессора #define. Макросы с формальными параметрами.

#define — задаёт макроопределение (макрос) или символическую константу

Макросы в языке Си используются для определения небольших фрагментов кода. Во время обработки кода, каждый макрос заменяется соответствующим ему определением. Если макрос имеет параметры, то они указываются в теле макроса; таким образом, макросы могут походить на функции

Например:

#define max(a,b) ((a) > (b) ? (a) : (b))

определяет макрос max, использующий два аргумента a и b. Этот макрос можно вызывать как любую Си-функцию, используя схожий синтаксис. То есть, после обработки препроцессором,

z = max(x,y);

становится

z = ((x) > (y) ? (x) : (y));

47.Директивы условной компиляции. Директивы #if, #else, #elif и #endif

Имеется несколько директив, которые дают возможность выборочно компилировать части исходного кода вашей программы. Этот процесс называется условной компиляцией.

1)Если находящееся за #if константное выражение истинно, то компилируется код, который находится между этим выражением и #endif. В противном случае этот промежуточный код пропускается.

2)Директива #else работает в основном так, как else — ключевое слово языка С: задает альтернативу на тот случай, если не выполнено условие #if.

3)Директива #elif означает "else if" и устанавливает для множества вариантов компиляции цепочку if-else-if. После #elif находится константное выражение. Если это выражение истинно, то компилируется находящийся за ним блок кода, и больше не проверяются никакие другие выражения #elif. В противном же случае проверяется следующий блок этой последовательности.

4)Директива #endif обозначает конец блока #if.

48.Директивы препроцессора #ifdef, #ifndef, #undef, defined.

#ifdef — осуществляет условную компиляцию при определённости символической константы

#ifndef — осуществляет условную компиляцию при неопределённости символической константы

#undef — отменяет предыдущее определение

defined -с его помощью можно узнать, определено ли имя макроса.

49.Директивы препроцессора #include, #line, #error.

#line — препроцессор изменяет номер текущей строки и имя компилируемого файла

#include — вставляет текст из указанного файла

#error — выдача диагностического сообщения

50.Операторы препроцессора #, ##, #@.

Операторы препроцессора # и ## применяются в сочетании с оператором #define.

Оператор #, который обычно называют оператором превращения в строку (stringize), превращает аргумент, перед которым стоит, в строку, заключенную в кавычки.

Оператор ##, который называют оператором склеивания (pasting), или конкатенации конкатенирует две лексемы.

51.Работа с отладчиком.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]