요청 및 응답을위한 두 개의 c 구조체를 포함하는 프로젝트에 대한 통신 프로토콜을 작성 중입니다. 장치 설정 방법에 따라 데이터 전송은 요청 (마스터 모듈) 또는 응답 (슬레이브 모듈)이 될 수 있습니다.
구조는 서로 매우 가깝습니다. 가장 큰 차이점은 요청이 응답과 구조화되는 방식입니다.
다음과 같이 정의 된 전역 변수에 대한 포인터를 보유하는 변수가 있습니다.
unsigned int MBData;
MBData = gCommResponse;
코드를 참조 할 때
((MBResponse*)MBData)->Address = someData;
또는
((MBResponse*))MBData)->Address = someData;
이 코드는 성공적이지만 통신 기능에 대해 더 모호성을 원합니다.
내가하고 싶은 것은 MBRequest 또는 MBResponse에 대한 포인터를 사용하여 MBData를 캐스팅하는 것입니다.
unsigned int MBStruct;
MBStruct = &MBResponse;
((MBStruct*)MBData)->Address = someData; // Something like this
C 프로그래밍에서 이것이 가능합니까?
감사.
이것은 불가능합니다. 구조체 멤버에 액세스 할 때 컴파일러는 컴파일 타임에 구조체 유형을 알아야합니다.
두 구조체에 공통 이름을 가진 필드가있을 수 있지만 동일한 (또는 호환 가능한) 유형이거나 각 구조체에서 동일한 오프셋에 있다는 보장은 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다