Я пытаюсь эмулировать (уже не существующий) генератор отчетов мэйнфрейма в среде Access 2003 или Access 2010. Данные, которые он генерирует, должны точно соответствовать бумажным отчетам начала 70-х годов. К сожалению, данные самых ранних лет обрабатывались на оборудовании, которое использовало представление с плавающей запятой IBM вместо IEEE. С помощью Google я нашел библиотеку функций VBA, которые преобразуют число с плавающей запятой из десятичного в 32-битный двоичный формат IEEE 754. Мне пришлось изменить библиотеку, чтобы она принимала 32-битные или 64-битные числа с плавающей запятой, поэтому у меня есть скромные знания о форматах с плавающей запятой, однако у меня возникают проблемы с преобразованием из IEEE в двоичный формат IBM, а также проблемы с умножением и добавлением либо номера IBM, либо IEEE.
Я не использовал другие библиотеки для выполнения этого преобразования и арифметических операций в VBA - есть ли более простой способ сделать это, или существующая библиотека, которую я не нахожу ? В противном случае ясное и прямое объяснение соответствующих алгоритмов?
Заранее спасибо. т.е. кто-то где-то должен хранить указатель на объект, отличный от const
, и этот кто-то отвечает за освобождение.
Теперь рассмотрим библиотеку, выделяющую и инициализирующую объекты, которые не могут быть изменены из пользовательского пространства код, поэтому вызовы функций всегда возвращают указатели, соответствующие const
.
Очевидно, что библиотека является владельцем объекта и должна сохранять указатель, отличный от const
, что несколько глупо поскольку пользователь уже предоставляет совершенно допустимую, но const
копию указателя при каждом вызове библиотеки.
Чтобы освободить такой объект, библиотека должна отбросить квалификатор const
; насколько я могу судить, следующее
void dealloc_foo(const struct foo *foo)
{
free((void *)foo);
}
верно для C; он был бы недействителен только в том случае, если параметр foo
был дополнительно квалифицирован для restrict
.
Проблема в теге