void * 사용 방법
글쓴이: garnete / 작성시간: 금, 2023/04/28 - 10:03오전
안녕하세요
typedef struct
{
char name[2];
...
}st_A;
typedef struct
{
char name[3];
...
}st_B;소켓으로 받은 데이터가 경우에 따라 A, B의 구조로 되어 있습니다.
내부 변수명은 동일하기 때문에 void* 변수로 받아 사용을 하려고 하는데 오류가 발생 합니다.
방법이 없을까요?
{
void* val;
// data 수신한 데이터
if (st_A 구조인경우)
val = (st_A *)data ;
else
val = (st_B *)data ;
printf("name=[%s]\n", val->name);
}Forums:


이렇게요?
이렇게요?
// data 수신한 데이터 val = (void *)data; if (st_A 구조인경우) printf("name=[%s]\n", ((st_A *)val)->name); else printf("name=[%s]\n", ((st_B *)val)->name);조언 감사합니다.
조언 감사합니다.
좀더 나아가서 (st_A *) 이런 형변환(?) 없이 val을 바로 사용할 수는 없나요?
void *는 어떤 형도 갖지 않기 때문에 어떤 형도
void *는 어떤 형도 갖지 않기 때문에 어떤 형도 붙일 수 있지만, 반대로 어떤 형도 없기 때문에 컴파일러가 구조체 내부 멤버 등을 붙일 수가 없습니다. (st_A *) 식으로 컴파일러가 내부 멤버를 쫓아가기 위한 정보를 지시해 주어야 합니다.
시원한 답변 감사합니다.
시원한 답변 감사합니다.
댓글 달기