Справочная система C guide



Содержание


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

' Спецификацией здесь называется определяемая лексема, а реализацией - определяющее константное выражение. - Прим. перев.

88 Мобильность программ на языке Си

ний extern (см с 49 и 51) При этом можно использовать разные методы Можно поместить эти внешние описания в начало исходных файлов программы (с помощью включения файлов) или описать эти внешние переменные в функциях, которые их используют

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

Используйте описание typedef для локализации определения типов данных, зависящих от ЭВМ.

Описание typedef (см с 47) обеспечивает локальные определения типов тех данных, которые зависят от конкретной ЭВМ Если вы измените определение типа, заданное описанием typedef, то соответственно изменятся все переменные, описанные с помощью этого производного типа Система обеспечивает набор стандартных определений в файле

/usr/mclude/sys/types h Пример

typedef unsigned short ino_t, /* индекс файла */

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

типа в файле /usr/mclude/sys/types h

14.5. Мобильность файлов данных

Для переноса файлов, содержащих двоичные данные, используйте символьный ввод-вывод.

Файлы двоичных данных по сути своей не мобильны, поскольку разные ЭВМ используют разное внутреннее представление данных К сожалению, не существует простого пути для переноса файлов данных Порядок байт в слове может привести к серьезным проблемам при переносе данных с одной ЭВМ на другую по принципу "байт в байт" Кроме того, коды символов могут быть разными на разных ЭВМ

Один из способов решения этой проблемы заключается в раз работке специальных программ преобразования для конкретных форматов данных Другой подход заключается в записи байт, составляющих объект данных, в некотором машинно-независимом порядке Для передачи символьных данных используйте библио течные функции prmtf и scanf (см. с 70 и 74), хотя это и непрактично




Содержание  Назад  Вперед