안녕하세요. 민인식입니다.
말씀해 주셨던 구조체의 사용 중에 init, release 라른 함수 정의해서 쓰 는 예를 좀 보여주시면 안될까여?
^^... 이래 저래 해봤지만 잘 되질 않네염...
그럼 안녕히 계세요.
#include
typedef struct _data { char *buf; int (*init)(struct _data*); void (*run)(struct _data*); int (*release)(struct _data*); }Data;
static int _init(Data *p) { if((p->buf=(char*)malloc(sizeof(char)*100)) == NULL) return -1; strcpy(p->buf, "hello"); return 0; }
static void _run(Data *p) { printf("%s\n", p->buf); }
static int _release(Data *p) { free(p->buf); return 0; }
int main() { Data data; data.init = _init; data.run = _run; data.release = _release; if(data.init(&data) < 0) return -1; data.run(&data); data.release(&data); return 0; }
감사합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: 옥정훈님. 아래 답해주셨던 init, release 의 간단한 예를..
#include
typedef struct _data
{
char *buf;
int (*init)(struct _data*);
void (*run)(struct _data*);
int (*release)(struct _data*);
}Data;
static int _init(Data *p)
{
if((p->buf=(char*)malloc(sizeof(char)*100)) == NULL)
return -1;
strcpy(p->buf, "hello");
return 0;
}
static void _run(Data *p)
{
printf("%s\n", p->buf);
}
static int _release(Data *p)
{
free(p->buf);
return 0;
}
int main()
{
Data data;
data.init = _init;
data.run = _run;
data.release = _release;
if(data.init(&data) < 0)
return -1;
data.run(&data);
data.release(&data);
return 0;
}
감사합니다.
감사합니다.
댓글 달기