Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
91-100.docx
Скачиваний:
6
Добавлен:
11.09.2019
Размер:
33.32 Кб
Скачать

91.Совместимость типов. Перечисляемые типы. Типы массивов. Типы функций. Типы структур и объединений. Типы указателей. Совместимость нескольких исходных файлов.

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

Перечисляемые типы.

Перечисляемый тип— в программировании тип данных, чьё множество значений представляет собой ограниченный список идентификаторов,играющих ту же роль, что и обычные именованные константы, но связанные с этим типом. Использование перечислений позволяет сделать исходные коды программ более читаемыми. Классическое описание:

enum cardsuit

{

CLUBS,

DIAMONDS,

HEARTS,

SPADES

};

Типы массивов.

Если два массива содержат элементы совместимых типов, то сами массивы считаются совместимыми. Если размер указан только для одного массива или же не указан совсем, то совместимость типов остается, когда размеры указаны для обоих массивов, для того, чтобы они были совместимыми, размеры должны совпадать.

Типы функций.

Для того чтобы считать совместимыми две функции, имеющие прототипы, должны выполниться три условия. Две функции должны иметь один и тот же возвращаемый тип и одинаковое число параметров; при этом соответствующие параметры должны быть совместимых типов, имена параметров могут не совпадать.

Типы структур и объединений.

При объявлении в программе новой структуры или объединения вводится новый тип, отличный от любого другого типа в том же исходном файле.

Типы указателей.

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

Совместимость нескольких исходных файлов.

Повторяющиеся объявления структур, объединений и перечисляемых типов совместимы в исходных файлах, если в них объявляются одни и те же элементы, в одном и том же порядке и элементы имеют совместимые типы. Для перечисляемых типов, однако, не требуется, чтобы константы перечисления объявлялись в том же порядке, хотя каждая константа должна иметь то же самое перечисляемое значение.

92.Макроопределения. Определение макросов. Макросы и параметры. Сложности при раскрытии макросов.

Макроопределения.

Макрос — это фрагмент кода, который выглядит и работает так же, как функция.

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

Поскольку макрос является встраиваемым, не существует единого адреса, связанного с ним. Невозможно объявить указатель на макрос.

Определение макросов.

Макросы определяются аналогично символьным константам. Единственное отличие в том, что строка подстановки substitution_string обычно содержит несколько значений:

#define search_string substitution_string

/* #define — символьная константа */

#define iMAX_ROWS 100

/* #define — макрос */

#define NL putchar('\n')

Макросы и параметры.

В языке С макросы могут иметь аргументы. Такие макросы необходимо определять вместе с параметрами, назначение которых аналогично аргументам функции: они определяют места подстановки фактических параметров.

Макроопределение с аргументами очень похоже на функцию, поскольку аргументы его заключены в скобки.

Сложности при раскрытии макросов.

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

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

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