Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Соображения о переносимости





 

 

Некоторые части языка "C" по своей сути машинно-зависи-

мы. Следующие ниже перечисление потенциальных трудностей хо-

тя и не являются всеобъемлющими, но выделяет основные из

них.

Как показала практика, вопросы, целиком связанные с ап-

паратным оборудованием, такие как размер слова, свойства

плавающей арифметики и целого деления, не представляют осо-

бенных затруднений. Другие аспекты аппаратных средств нахо-

дят свое отражение в различных реализациях. Некоторые из

них, в частности, знаковое расширение (преобразующее отрица-

тельный символ в отрицательное целое) и порядок, в котором

помещаются байты в слове, представляют собой неприятность,

которая должна тщательно отслеживаться. Большинство из ос-

тальных проблем этого типа не вызывает сколько-нибудь значи-

тельных затруднений.

Число переменных типа REGISTER, которое фактически может

быть помещено в регистры, меняется от машины к машине, также

как и набор допустимых для них типов. Тем не менее все ком-

пиляторы на своих машинах работают надлежащим образом; лиш-

ние или недопустимые регистровые описания игнорируются.

Некоторые трудности возникают только при использовании

сомнительной практики программирования. Писать программы,

которые зависят от каких- либо этих свойств, является чрез-

вычайно неразумным.

Языком не указывается порядок вычисления аргументов фун-

кций; они вычисляются справа налево на PDP-11 и VAX-11 и

слева направо на остальных машинах. порядок, в котором про-

исходят побочные эффекты, также не специфицируется.

Так как символьные константы в действительности являются

объектами типа INT, допускается использование символьных

констант, состоящих из нескольких символов. Однако, посколь-

ку порядок, в котором символы приписываются к слову, меняет-

ся от машины к машине, конкретная реализация оказывается

весьма машинно-зависимой.

Присваивание полей к словам и символов к целым осуществ-

ляется справо налево на PDP-11 и VAX-11 и слева направо на

других машинах. эти различия незаметны для изолированных

программ, в которых не разрешено смешивать типы (преобразуя,

например, указатель на INT в указатель на CHAR и затем про-

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

совании с накладываемыми извне схемами памяти.

 

Язык, принятый на различных компиляторах, отличается

только незначительными деталями. Самое заметное отличие сос-

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

PDP-11 не инициализирует структуры, которые содержат поля

битов, и не допускает некоторые операции присваивания в оп-

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

присваивания.

 

Date: 2015-09-17; view: 298; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию