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:
이렇게요?
이렇게요?
조언 감사합니다.
조언 감사합니다.
좀더 나아가서 (st_A *) 이런 형변환(?) 없이 val을 바로 사용할 수는 없나요?
void *는 어떤 형도 갖지 않기 때문에 어떤 형도
void *는 어떤 형도 갖지 않기 때문에 어떤 형도 붙일 수 있지만, 반대로 어떤 형도 없기 때문에 컴파일러가 구조체 내부 멤버 등을 붙일 수가 없습니다. (st_A *) 식으로 컴파일러가 내부 멤버를 쫓아가기 위한 정보를 지시해 주어야 합니다.
시원한 답변 감사합니다.
시원한 답변 감사합니다.
댓글 달기