을 제기하는 내용 노조를 쓰고, 그리고, 스레드 코드를 사용하여이 구조를 고려할 것 :안전
struct opcode
{
int somefields; //etc
union z
{
char opcode;
void *opaddress;
}
}
내 질문에, 같은 쓰기 안전 및 휴대용 일 아닌가요됩니다 char 데이터 (opcode)로 구조체를 만들고 다른 컴퓨터 (그리고 아마도 다른 아키텍처)에 파일을로드하고 즉시 포인터 (opaddress)를 채우십시오.
같은 액세스 할 수 있습니다 포인터. 'char'' opcode를 쓰고 읽는 것이 더 쉬울 것입니다. –
음. 존재하지 않을 수도있는 패딩 표준이 없습니다. 따라서 하나의 머신에서'쓰기 '한다고해서 다른 컴파일러에서 구조체의 동등한'읽기'가 보장되는 것은 아닙니다. 바이트는 같을 것이지만, 같은'struct '에로드 될지 여부는? '(void *')를 고려하면 더 좋아집니다. 포인터는 다른 아키텍처에서 크기가 다를 수 있습니다. 포인터와'char'는 절대 같은 크기가 아닙니다. 나는 다른 고려 사항이있을 것이라고 확신한다. 또한 이와 비슷한 작업을 수행 할 수 있도록 직렬화 라이브러리가 있습니다. –
친구, 파일에 쓸 때 나는 포인터 (쓸데없는 *)를 쓰지 않을 것입니다. 대신 파일에서 데이터를 읽을 때 char 값을 쓰고 어쩌면 그 포인터를 쓸 수 있습니다. char의 값에 따른 조합. –