OberonCore https://forum.oberoncore.ru/ |
|
Си-unions в КП https://forum.oberoncore.ru/viewtopic.php?f=2&t=3052 |
Страница 1 из 1 |
Автор: | Илья Ермаков [ Вторник, 07 Декабрь, 2010 17:31 ] |
Заголовок сообщения: | Си-unions в КП |
Выделено: viewtopic.php?p=55205#p55205 В КП можно IMPORT SYSTEM и RECORD [union]. |
Автор: | Alexey Veselovsky [ Вторник, 07 Декабрь, 2010 17:33 ] |
Заголовок сообщения: | Re: Oberon & bitfields & unions |
Илья Ермаков писал(а): В КП можно IMPORT SYSTEM и RECORD [union]. Но с битовыми полями придётся всё равно бороться в ручную? Да, и в каком виде оно импортирует union? |
Автор: | Илья Ермаков [ Вторник, 07 Декабрь, 2010 17:34 ] |
Заголовок сообщения: | Re: Oberon & bitfields & unions |
Когда в импорте указан SYSTEM, то Вы можете объявлять типы RECORD [union]. Разумеется, как и [untagged], их нельзя выделить через КП-шный NEW, только у ОС. |
Автор: | Alexey Veselovsky [ Вторник, 07 Декабрь, 2010 17:47 ] |
Заголовок сообщения: | Re: Oberon & bitfields & unions |
Илья Ермаков писал(а): Когда в импорте указан SYSTEM, то Вы можете объявлять типы RECORD [union]. Разумеется, как и [untagged], их нельзя выделить через КП-шный NEW, только у ОС. А можно подробней с примером как это будет выглядеть, и что с этим RECORD [union] можно делать? А то BB под рукой нет. (да, я правильно понимаю, что RECORD [untagged] это такой RECORD к которому не применим оператор WITH ?) |
Автор: | Илья Ермаков [ Вторник, 07 Декабрь, 2010 18:21 ] |
Заголовок сообщения: | Re: Oberon & bitfields & unions |
Да. [untagged] и [union] в точности соотвествуют структурам и union-ам Си. Т.е. чисто распил памяти с обращением по имени поля. Для взаимодействия из КП с внешними библиотеками. Код: TYPE MyType = RECORD [union] var1: RECORD [untagged] a, b: INTEGER END; var2: LONGINT END; Компилируемость не проверял, может, тип var1 отдельно объявить, но, скорее всего, должно сработать. |
Автор: | Alexey Veselovsky [ Вторник, 07 Декабрь, 2010 19:28 ] |
Заголовок сообщения: | Re: Oberon & bitfields & unions |
Спасибо. Интересное и полезное расширение. |
Автор: | Geniepro [ Вторник, 07 Декабрь, 2010 20:34 ] |
Заголовок сообщения: | Re: Си-unions в КП |
Вирт же, когда убирал объединения, имел в виду, что их заменит наследование. |
Автор: | Alexey Veselovsky [ Вторник, 07 Декабрь, 2010 21:36 ] |
Заголовок сообщения: | Re: Си-unions в КП |
Geniepro писал(а): Вирт же, когда убирал объединения, имел в виду, что их заменит наследование. Наследование менее универсально в плане низкоуровневой работы с данными. Не позволяет одни и те же данные трактовать так и эдак. См. пример в параллельной теме от Галкова. Ну, а кроме того, внешний мир не в курсе про наследование, ибо внешний мир это Си. И с этим нужно считаться. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |