Перевод структуры PureBasic на Си - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите плз, пришлось взяться за си и в Pelles C создавать библиотеку для приложения написанного на PureBasic 5 в библиотеку передается указатель на такую структуру:
; 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
может кто подскажет, правильные ли я использую типы данных? как указать строку предопределенного размера sadr.s{2048}? как правильно обозвать указатель? С си знаком слабо, короче я основательно запутался в этих типах... пока сделал так, но понятное дело не работает(((
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;
}

Объяснение кода листинга программы

  1. Структура 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.
  2. Функция init объявлена как DLL-функция с прототипом DLLSHAREAPI int WINAPI init(struct sys *t).
  3. В функции init есть обращение к полю dt структуры t (которая передается в функцию как указатель), но без выполнения каких-либо операций с этим полем.
  4. Возвращаемое значение функции init не используется и никуда не присваивается.

Оцени полезность:

14   голосов , оценка 4.071 из 5