необ
список-параметров:
идетификатор
идентификатор , список-параметров
тело-функции:
список-описаний-типа оператор-функции
оператор-функции:
\(список описаний список-операторов\)
необ
определение данных:
EXTERN спецификатор типа список
необ необ
инициализируемых описателей ;
необ
STATIC спецификатор типа список
необ необ
инициализируемых описателей
необ;
26.5. Препроцессор #DEFINE идентификатор строка-лексем #DEFINE
· 229 -
#DEFINE идентификатор(идентификатор,...,идентификатор)стр
#UNDEF идентификатор
#INCLUDE “имя-файла”
#INCLUDE <имя-файла>
#IF константное-выражение
#IFDEF идентификатор
#IFNDEF идентификатор
#ELSE
#ENDIF
#LINE константа идентификатор
Последние изменения языка “C” (15 ноября 1978 г.)
27. Присваивание структуры
Структуры могут быть присвоены, переданы функциям в ка-
честве аргументов и возвращены функциям. Типы участвующих
операндов должны оставаться теми же самыми. Другие правдопо-
добные операторы, такие как сравнение на равенство, не были
реализованы.
В реализации возвращения структур функциями на PDP-11
имеется коварный дефект: если во время возврата происходит
прерывание и та же самая функция пеентерабельно вызывается
во время этого прерывания, то значение возвращаемое из пер-
вого вызова, может быть испорчено. Эта трудность может воз-
никнуть только при наличии истинного прерывания, как из опе-
рационной системы, так и из программы пользователя, прерыва-
ния, которое существенно для использования сигналов; обычные
рекурсивные вызовы совершенно безопасны.
28. Тип перечисления
Введен новый тип данных,аналогичный скалярным типам язы-
ка паскаль. К спецификатору-типа в его синтаксическом описа-
нии в разделе 8.2. Приложения а следует добавить
спецификатор-перечисления
с синтаксисом
пецификатор-перечисления:
ENUM список-перечисления
ENUM идентификатор список-перечисления
------------- -------------------
ENUM идентификатор
· 230 -
cписок-перечисления:
перечисляемое
список-перечисления, перечисляемое
------------------- -------------
перечисляемое:
идентификатор
идентификатор = константное выражение
------------- ---------------------
Роль идентификатора в спецификаторе-перечисления пол-
ностью аналогична роли ярлыка структуры в спецификато-
ре-структуры; идентификатор обозначает определенное перечис-
ление. Например, описание
ENUM COLOR \(RED, WHITE, BLACK, BLUE \);
. . .
ENUM COLOR *CP, COL;
Объявляет идентификатор COLOR ярлыком перечисления типа,
описывающего различные цвета и затем объявляет CP указателем
на объект этого типа, а COL - объектом этого типа.
Идентификаторы в списке-перечисления описываются как
константы и могут появиться там, где требуются (по контекс-
ту) константы. Если не используется вторая форма перечисляе-
мого (с равеством =), то величины констант начинаются с 0 и
возрастают на 1 в соответствии с прочтением их описания сле-
ва на право. Перечисляемое с присвоением = придает соответс-
твующему идентификатору указанную величину; последующие
идентификаторы продолжают прогрессию от приписанной величи-
ны.
Все ярлыки перечисления и константы могут быть различны-
ми и непохожими на ярлыки и члены структур даже при условии
использования одного и того же множества идентификаторов.
Объекты данного типа перечисления рассматриваются как
объекты, имеющие тип, отличный от любых типов и контролирую-
щая программа LINT сообщает об ошибках несоответствия типов.
В реализации на PDP-11 со всеми перечисляемыми переменными
оперируют так, как если бы они имели тип INT.
29. Таблица изображений непечатных символов языка “C”.
В данной таблице приведены изображения некоторых симво-
лов (фигурные скобки и т.д.) языка “C”, которых может не
оказаться в знаковом наборе дисплея или печатающего устройс-
тва.
· 231 -
! Значение ! Изображение ** !
! ! В тексте !
! Фигурная открывающаяся ! !
! Скобка ! \( !
! ! !
! Фигурная закрывающаяся ! !
! Скобка ! \) !
! ! !
! Вертикальная ! !
! Черта ! \! !
! ! !
! ! !
! Апостороф ! \' !
! ! !
! Волнистая ! !
! Черта ! \^ !
! ! !
** П_р_и_м_е_ч_а_н_и_е:
Изображения приведены для операционой системы UNIX. При
работе компилятора “C” под управлением любой другой операци-
онной системы, необходимо воспользоваться соответствующим
руководством для данной системы.