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



Содержание


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

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

Следите за сравнением указателей, имеющих знак.

Некоторые ЭВМ выполняют сравнение указателей с учетом знака, другие делают беззнаковое сравнение Это различие несущественно, если сравнивать указатели, содержащие правильные адреса Если указателю будет присвоено значение -1, то в зависимости от ЭВМ оно бупет рассматриваться или как наибольшее допустимое значение, или как недопустимое значение (меньше минимально до пустимого)

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

Следите за переполнением значения указателей.

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

Пример

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

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

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

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

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

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

Пример char с,

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




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