Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C. Тема 2. Раздел 1

.pdf
Скачиваний:
15
Добавлен:
21.03.2016
Размер:
808 Кб
Скачать
☆

Параметры макросов не имеют типов

Что произойдёт при обработке этого кода? z = MAX(1.2, &variable);

Параметры в макросы не передаются через стэк

Сколько раз будут вызваны функции x() и y()?

z = MAX(x(), y());

Макросы не имеют адреса

#define AAA 0

printf( "AAA: %d\n", AAA );

#undef AAA

#define AAA 10

printf( "AAA: %d\n", AAA );

Преимущества

Экономия производительности и памяти при замене небольших по размеру функций

Экономия памяти данных при использовании символических констант

Недостатки

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

Затрудняют отладку

▪Особенно характерно для «парных» макросов, один из которых содержит начало выражения, а второй – окончание выражения

Часть 5

Условная компиляция предназначена для включения или исключения частей исходного кода программы при её компиляции в зависимости от некоторого условия

Типовое применение

Исключение повторного включения файла с помощью #include

Проверка платформы, процессора, конфигурации компиляции (Debug, Release)

 

 

 

Вариант 1

Вариант 2

Вариант 3

#ifdef x

#if x

#ifndef x

...

...

...

#else

#else

#else

...

...

...

#endif

#endif

#endif

int a = 100; #ifdef _DEBUG

printf( "a: %d\n", a ); #endif

Преимущества

Облегчает разработку переносимого кода, не зависящего от платформы

Позволяет легко выключать отладочный код из результирующего кода

Позволяет безопасно по-разному определять макросы с одинаковыми именами в разных частях кода

Недостатки

Сложность выявления ошибок компиляции

Сложность отладки из-за различного проявления ошибок выполнения

Часть 6

Назначение: изменение номера текущей строки и имени файла исходного кода

Синтаксис

#line номер_строки "имя_файла"

Пример

#line 32 "some_file.c"

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