Вопросы по тегу: ada

(1)

Как прочитать указатель C Void в Ada?

Следующая C-функция с указателем void в качестве аргумента:int read(void *buf, size_t num); int => возвращает, была ли операция чтения успешной или нет. void *buf => c беззнаковым указателем байтового буфера в качестве аргумента функции. size_t num => размер байтового буфера, который должен быть заполнен.В настоящее время у меня есть следующая реализация Ada:with Ada.Text_IO; with System; with Interfaces.C; use Ada.Text_IO; use Interfaces.C; procedure Main is -- Imported C function function Read(Buf:System.Address; Num:int) return int; pragma Import(C, Read, "read"); -- Byte Array Type type Byte_Type is mod 2**8; for Byte_Type'Size use 8; type Byte_Array_Type is array(Positive range <>) of Byte_Type; -- Initialize Buffer_Check:int; Buffer_Size:Positive:=10; Buffer_Array:Byte_Array_Type(1 .. Buffer_Size):=(others => 0); --initialise array with zero begin Buffer_Check:=Read(Buffer_Array'Address, int(Buffer_Size)); if Buffer_Check /= 0 then Put_Line("Read success"); for K in Buffer_Array'First .. Buffer_Array'Last loop Put_Line(Integer'Image(Integer(Byte_Type(Buffer_Array(K))))); end loop; else Put_Line("Read Failed"); end if; end Main; Массив Buffer_Array не заполняется, как ожидалось. Было бы здорово, если бы у кого-нибудь из энтузиастов Ada была какая-нибудь подсказка или идея.
m

mcxbain

год назад

Ответов: 1

2022 WebDevInsider