typedef을 이용하여 변수 선언 이후 대입방법.
앨버트
질문 내용 :
제가 아래와 같이 구조체를 작성하였습니다.
typedef char byte_8[8];
typedef char byte_6[6];
typedef char byte_4[4];
typedef char byte_2[2];
typedef char byte_1;
----------------------------------------------
이 후에..
메인함수 안에 아래와 같이 작성하였습니다.
_msg msg; === 이거는 제가 만든 메세지라는 구조체입니다. 다소복잡 -_-;
byte_1 Version_val;
byte_1 Flags_val;
byte_2 Function_Type_val;
byte_1 OP_ID_val;
byte_1 Message_Type_val;
byte_2 Length_val;
byte_6 MSID_val;
byte_4 Reserved1_val;
byte_2 Transaction_ID_val;
byte_2 Reserved2_val;
--------------------------------------------------
Version_val = msg.msg_head.Version;
Flags_val = msg.msg_head.Flags;
Function_Type_val = msg.msg_head.Function_Type;
OP_ID_val = msg.msg_head.OP_ID;
Message_Type_val = msg.msg_head.Message_Type;
Length_val = msg.msg_head.Length;
MSID_val = msg.msg_head.MSID;
Reserved2_val = msg.msg_head.Reserved1;
Transaction_ID_val = msg.msg_head.Transaction_ID;
Reserved2_val = msg.msg_head.Reserved2;여기서 질문은 배열로 만들지 않은 변수들은 정상적으로 값이 들어가는데
배열로 만들어서 2바이트, 4바이트, 6바이트 짜리들은 정상적으로 들어가지 않습니다. 타입이 다르니깐요..
여기까지는 알겠는데 제가 이 변수에 데이터값을 넣어야 하는데 어떻게 넣어야 할지 막막합니다.
혹시 질문이 모호하시다면 댓글에 글 남겨주시면 제가 아는 한도내에 댓글로 추가 질문하겠습니다.
감사합니다.
-
달달한캔디
감사합니다
-
허리달
메모리 복사 함수(memcpy/memmove)를 사용하거나, 루프를 돌려서 대입하면 됩니다..
[memcpy/memmove 사용을 추천... 더 간편하니까요..]
그리고 추가로 C 기본서부터 읽으세요 ;;;......
지금 하신 질문들은, C 문법서에서 배열, 포인터 장을 숙지하셨다면 안 하셨을 질문들이니까요... -
모두다
아 그리고 에러나는 부분에 * - 이아이(아스테리스크문자) 를 이용하면 에러는 나지 않습니다.
그이유도 궁금하네요.. -
올리브
추가 : 그냥 short, int, double 형으로 선언하려고 하다가 위와 같이 만들었는데 쉽지가 않네요.