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



         

Зависимость от ЭВМ - часть 5


Пример

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

struct large x [SIZE] *p, /* неправильно */ for (p=x [SIZE l],p>=x,p -)

Если массив х расположен в начале памяти, то возможна ситуация, при которой х - 1 будет не меньше, а больше х вслед ствие перехода через нижнюю границу диапазона значений ука зателей (потери значимости)

Не полагайтесь на конкретную кодировку символов.

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

Пример

char с,

if (с >= а && с <= 'z ) /* неправильно */ Такая проверка символа с на принадлежность к строчным буквам не является мобильной Чтобы такая проверка правильно выполнялась на других ЭВМ, сделайте так char с,

if (islower(c)) /* правильно */

Библиотечная функция islower (см с 67) определена в библи отеке стандартных функций ввода-вывода и является машин но-зависимой Поскольку ее спецификация мобильна, то данная функция обеспечивает мобильную проверку символов Учтите, что разные символьные коды могут отличаться по числу входящих в них символов Не используйте разность значений двух букв для вычисления лексикографического расстояния между ними

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

Любое повышение эффективности выполнения программы, достигаемое за счет знания особенностей конкретной ЭВМ, обычно не оправдывает связанную с этим потерю мобильности

Хорошо организованные программы

Программа называется хорошо организованной, если ее легко читать, модифицировать, эксплуатировать и, следовательно, переносить на другие ЭВМ

Все определения, связанные с конкретной операционной средой и конкретной ЭВМ, помещайте в файл заголовка.

Важнейшим средством разработки мобильных программ являются команды препроцессора #mclude и #define (см с 52) Помещайте все определения типов данных, поименованных констант, макроопределения, используемые более чем одной программой, в единый файл заголовка так, чтобы все возможные изменения были локализованы




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