Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: создать структуру
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Метценгерштейн
вот как бы реализовать это?
чтобы работать с типом данных как uint96
Harvester
Цитата(Метценгерштейн @ Dec 13 2014, 21:05) *
вот как бы реализовать это?
чтобы работать с типом данных как uint96

Насколько я знаю, для этого используются спец. библиотеки. Кодовая фраза - "big integer"
Xenia
Цитата(Метценгерштейн @ Dec 13 2014, 21:05) *
вот как бы реализовать это?
чтобы работать с типом данных как uint96


Создать структуру на требуемое число байт не проблема - например, хотя бы массив на 96 символов туда записать. Однако "работу с таким типом данных" пришлось бы все равно программировать вам самому, т.к. компилятору неизвестно, как над этими структурами проводить операции.

На простом C это сделать, по-видимому, невозможно, т.к. он не позволяет определять арифметические операторы над самодельным объектами. Это прозволяет сделать язык C++, но определения операций все равно пришлось бы писать вручную, подобно тому, когда на асемблере 8-битного процессора пытаешь умножить два 32-битных числа. Т.е. делать это придется по частям.

Но можно и на простом С отказаться от использования арифметических операторов, а вместо них написать свои функции add( uint96 a, uint96 b ) для сложения, sub( uint96 a, uint96 b ) для вычитания, и т.д. Насколько хорошо вы их напишете, настолько хорошо и будет работать такая арифметика.

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

P.S Компилятор у вас какой?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.