Перевод структуры PureBasic на Си - C (СИ)
Формулировка задачи:
Помогите плз, пришлось взяться за си и в Pelles C создавать библиотеку для приложения написанного на PureBasic 5
в библиотеку передается указатель на такую структуру:
может кто подскажет, правильные ли я использую типы данных?
как указать строку предопределенного размера sadr.s{2048}?
как правильно обозвать указатель?
С си знаком слабо, короче я основательно запутался в этих типах...
пока сделал так, но понятное дело не работает(((
; system Structure sysvar sadr.s{2048} cur.s{2048} dt.l *cgi; >; указатель на структуру *prcall; >; указатель на структуру *sysini; >; указатель на структуру *Request; >; указатель на структуру *vars; >; указатель на структуру dll_return_mem.l dll_return_mem_len.l dll_par.s{2048} thread.l krnl.i cl.w debug.b el.l EndStructure
struct sys { char sadr;//.s{2048} char cur;//.s{2048} long int dt;//.l *cgi; >; указатель на структуру *prcall; >; указатель на структуру *sysini; >; указатель на структуру *Request; >; указатель на структуру *vars; >; указатель на структуру long int dll_return_mem;//.l long int dll_return_mem_len;//.l dll_par.s{2048} long int thread;//.l long int krnl;//.i int cl;//.w char debug;//.b long int el;//.l } sys_str;
Решение задачи: «Перевод структуры PureBasic на Си»
textual
Листинг программы
struct sys { wchar_t sadr[2048];//.s{2048} wchar_t cur[2048];//.s{2048} long int dt;//.l int *cgi;//; >; указатель на структуру int *prcall;//; >; указатель на структуру int *sysini;//; >; указатель на структуру int *Request;//; >; указатель на структуру int *vars;//; >; указатель на структуру long int dll_return_mem;//.l long int dll_return_mem_len;//.l wchar_t dll_par[2048];//.s{2048} long int thread;//.l long int krnl;//.i int cl;//.w char debug;//.b long int el;//.l } sys_str; DLLSHAREAPI int WINAPI init(struct sys *t) { //t->dt; }
Объяснение кода листинга программы
- Структура
sys
объявлена с полями:sadr
типаwchar_t
с размером массива 2048;cur
типаwchar_t
с размером массива 2048;dt
типаlong int
;cgi
,prcall
,sysini
,Request
,vars
- все они типаint*
;dll_return_mem
иdll_return_mem_len
типаlong int
;dll_par
типаwchar_t
с размером массива 2048;thread
иkrnl
типаlong int
;cl
типаint
;debug
типаchar
;el
типаlong int
.
- Функция
init
объявлена как DLL-функция с прототипомDLLSHAREAPI int WINAPI init(struct sys *t)
. - В функции
init
есть обращение к полюdt
структурыt
(которая передается в функцию как указатель), но без выполнения каких-либо операций с этим полем. - Возвращаемое значение функции
init
не используется и никуда не присваивается.