OberonCore
https://forum.oberoncore.ru/

Интерфейсный модуль для заголовка С
https://forum.oberoncore.ru/viewtopic.php?f=2&t=2264
Страница 1 из 1

Автор:  Роман М. [ Пятница, 22 Январь, 2010 19:16 ]
Заголовок сообщения:  Интерфейсный модуль для заголовка С

При попытке оформить сишный код
Код:
void * cairo_get_user_data (cairo_t *cr, const cairo_user_data_key_t *key);

таким образом
Код:
PROCEDURE [ccall] cairo_get_user_data* (cr: Pcairo_t; key: Pcairo_user_data_key_t): POINTER;
я получил от компилятора сообщение, что не хватает TO (<тип>).

Я переписал его следующим образом:
Код:
TYPE
   Ptr* =  POINTER TO RECORD [untagged] END;
PROCEDURE [ccall] cairo_get_user_data* (cr: Pcairo_t; key: Pcairo_user_data_key_t): Ptr;


Правильно ли это?

Автор:  Евгений Темиргалеев [ Пятница, 22 Январь, 2010 19:19 ]
Заголовок сообщения:  Re: Интерфейсный модуль для заголовка С

Да.

Автор:  Сергей Губанов [ Суббота, 23 Январь, 2010 00:52 ]
Заголовок сообщения:  Re: Интерфейсный модуль для заголовка С

Я обычно void* оформляю как INTEGER.

Автор:  Созерцатель [ Суббота, 23 Январь, 2010 11:40 ]
Заголовок сообщения:  Re: Интерфейсный модуль для заголовка С

Сергей Губанов писал(а):
Я обычно void* оформляю как INTEGER.
???

Автор:  Valery Solovey [ Суббота, 23 Январь, 2010 13:23 ]
Заголовок сообщения:  Re: Интерфейсный модуль для заголовка С

А это случаем не обычный процедурный тип?
То есть, может так:
Код:
   TYPE
      cairo_t = INTEGER;
      cairo_user_data_key_t = RECORD END;
      (* void * cairo_get_user_data (cairo_t *cr, const cairo_user_data_key_t *key); *)
      cairo_get_user_data = PROCEDURE (cr : cairo_t; IN key : cairo_user_data_key_t);

И зачем [ccall]? Предполагается работать с DLL?

Автор:  Роман М. [ Понедельник, 25 Январь, 2010 15:37 ]
Заголовок сообщения:  Re: Интерфейсный модуль для заголовка С

Valery Solovey писал(а):
А это случаем не обычный процедурный тип?
То есть, может так:
Код:
   TYPE
      cairo_t = INTEGER;
      cairo_user_data_key_t = RECORD END;
      (* void * cairo_get_user_data (cairo_t *cr, const cairo_user_data_key_t *key); *)
      cairo_get_user_data = PROCEDURE (cr : cairo_t; IN key : cairo_user_data_key_t);

И зачем [ccall]? Предполагается работать с DLL?

Именно так. С библиотекой libcairo.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/