2013-03-12 2 views
2

Я пытаюсь перевести заголовок libfprint (fprint.h) на Pascal, но я нахожу структуру, которая не может понять, а некоторые инструменты, такие как «C2Pas», отправляют только ошибку.Перевести C на Pascal

структура выглядит следующим образом:

struct fp_dscv_dev **fp_discover_devs(void); 

Где fp_dscv_dev это только объявляется следующим образом:

/* structs that applications are not allowed to peek into */ 
struct fp_dscv_dev; 

Что бы эквивалент в Паскале?

Заранее спасибо

+3

У вас здесь две разные вещи. 'fp_discover_devs' является объявлением функции, а' fp_dscv_dev' является прямым объявлением 'struct'. – SomeWittyUsername

+0

Спасибо за ответ @icepack, что нужно использовать двойную «*» эту функцию? thanks – user2162258

+0

Это просто означает указатель на указатель. Здесь нет единственной очевидной причины для этого выбора, но он часто появляется в интерфейсе для сложных кучеобразных объектов, которые библиотека или ОС может захотеть переконфигурировать без необходимости уведомлять всех пользователей (Mac OS сделала это для управления памятью до OS X, чтобы поддерживать чипы без полной поддержки виртуальной памяти). – dmckee

ответ

1

Opague указатели традиционно основные указатели в Pascal (как пустота * в с).

Если вы действительно хотите аспект структуры, чтобы вернуться определить его как запись без полей:

Type 
     fp_dscv_dev = record end; 

Как сказано в комментариях, а ** является двойной ссылкой Так как в большинстве современных паскалей ссылок могут «т быть в параметре и возвращаемого значения деклараций, мы определяем дополнительные типы для них:

 pfp_dscv_dev = ^fp_dscv_dev 
     ppfp_dscv_dev = ^pfp_dscv_dev 

Наконец сама декларация

function fp_discover_devs:ppfp_dscv_dev; cdecl; 
+0

Это то, что мне нужно, большое спасибо. – user2162258

Смежные вопросы