Программирование >>  Структурное программирование 

1 ... 302 303 304 [ 305 ] 306 307 308 ... 342


Терминология

#define

#elif

#else

#endif

#еггог

#ifdef #ifndef

#include имя файла

#include <имя файла>

#line

#pragma

#undef

\ (обратный слэш) символ продолжения макроса в новой строке

DATE

FILE

LINE

STDC

TIME

abort

assert

assert.h

stdio.h

stdUb.h

аргумент

директива препроцессора заголовочные файлы стандартной библиотеки заголовочный файл замещающий текст макрос

макрос с аргументами область действия символической константы или макроса отладчик

предопределенные символические

константы

препроцессор

препроцессорная операция преобразования в строку #

препроцессорная операция склейки лексем ##

расширение макроса

символическая константа

условная компиляция

условное выполнение директив препроцессора

Хороший стиль программирования

17.1. Использование ясных по смыслу имен для символических констант улучшает понимание текста программы, делает текст самодокументируемым.

Советы по повышению эффективности

17.1. Макросы могут использоваться для замены вызовов функций на встраиваемый в программу код. Это устраняет накладные расходы по вызову функции. Но предпочтительнее все же использовать встраиваемые функции.

Упражнения для самопроверки

17.1. Заполните пробелы в следующих утверждениях:

а) Каждая директива препроцессора должна начинаться с

Ь) Конструкции условной компиляции могут быть расширены до конструкций с множественным выбором при помощи директив и

с) Директива ты.

создает макросы и символические констан-



d) В строке, содержащей директиву, перед директивой препроцессора могут появляться только символы .

e) Директива аннулирует символические константы и макросы.

f) Директивы и являются сокращенными обозначениями директив #if defined (имя) и #if idefined (имя).

g) дает возможность программисту управлять выполнением директив препроцессора и трансляцией программного кода.

h) Макрос выводит сообщение и завершает выполнение

программы, если значение выражения макроса равно 0.

i) Директива включает один файл в другой.

j) Операция склеивает два своих аргумента.

к) Операция преобразует свой операнд в строку символов.

1) Символ указывает на то, что замещающий текст символической константы или макроса продолжается в следующей строке.

ш) Директива устанавливает начальный номер для нумерации последующих строк файла исходного текста.

17.2. Напишите программу, выводящую значения предопределенных символических констант, перечисленных на рис. 17.1.

17.3. Для выполнения приведенных ниже операций напишите соответствующую директиву препроцессора:

a) Определите символическую константу YES со значением 1.

b) Определите символическую константу N0 со значением 0.

c) Включите заголовочный файл common.h. Этот файл находится в том же каталоге, что и компилируемый файл.

d) Перенумеруйте последующие строки в файле, начиная с номера 3000.

e) Если символическая константа TRUE определена, аннулируйте ее, а затем переопределите на 1. Не используйте директиву #ifdef.

f) Если символическая константа TRUE определена, аннулируйте ее, а затем переопределите на 0. Используйте директиву препроцессора #ifdef.

g) Если символическая константа ACTIVE не равна О, определите символическую константу INACTIVE, равную 0. В противном случае определите INACTIVE как 1.

h) Определите макрос CUBE VOLUME, который вычисляет объем куба. Макрос получает один аргумент.

Ответы на упражнения для самопроверки

17.1. а) #. Ь) #elif, #else. с) #define. d) пробела, е) #undef. f) #ifdef, #ifndef. g) Условная компиляция, h) assert, i) #include. j) ##. k) #. 1) \. m) #line.

17.2. tinclude <iostream.h> main ( )



cout

LINE

LINE

<<

endl;

cout

FILE

FILE

endl;

cout

DATE

DATE

endl;

cout

TIME

TIME

endl;

cout <<

STDC

STDC

endl;

return 0;

LINE = 5

FILE = macros.с

DATE = Mar 08 1994

TIME = 10:23:47

STDC = 1

17.3.a) tdefine YES 1

b) tdefine NO 0

c) tinclude common.h

d) tline 3000

e) tif defined(TRUE)

tundef TRUE tdefine TRUE 1 tendif

f) tifdef TRUE

tundef TRUE tdefine TRUE 1 tendif

g) tif ACTIVE

tdefine INACTIVE 0 telse

tdefine INACTIVE 1 tendif

h) tdefine CUBE VOLUME(x)

Упражнения

17.4. Напишите программу, в которой определите макрос с одним аргументом, при помощи которого можно было бы вычислять объем сферы. Программа должна рассчитать объем сферы, радиус которой изменяется от 1 до 10, и выдать результаты в табличной форме. Формула для объема сферы:

(4/3)*р*г

где р равно 3.14159.

17.5. Составьте программу, которая выводит на экран следующий результат:

Сумма X и у равна 13

В программе должен определяться макрос SUM с двумя аргументами X и у, который и производит вывод указанной строки.



1 ... 302 303 304 [ 305 ] 306 307 308 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика