문제

고 싶을 예측할 수 있게 될 것입니다 무엇에서 결과 바이너리를 탈출하기 때문에 쓰기에 Ada 직렬화하여 기록이다.어디 있는지 알아 볼 수 있습니이까?

내가 일부 유산 Ada 소프트웨어 생산하는 바이너리 파일에 쓰기 ing 기록,그리고 내가 필요로 디버깅하는 C++프로그램을 쓰기 호환되는 바이너리 파일입니다.그래서 나는 것을 이해하는 어떤 규칙 Ada 다음과 같이면 직렬화하고 기록할 수 있도록 확인하는 C++코드를 생성 기능적으로 동등한 기록합니다.

도움이 되었습니까?

해결책

으로 언급없이,다른 사람의 추가 지시 컴파일러에 대한 자신의 결정을 내릴 레코드의 레이아웃입니다.최고의 접근 방식을 변경은 원래 코드를 작성의 기록을 사용하여 특정 레이아웃이 있습니다.특히, 기록 표현 절 할 수 있습 Ada 프로그래머를 정확하게 지정 물리적 레이아웃을 위한 기록이다.사실,당신은 당신이 있는지 여부를 확인해야는 원래 코드가 하나의 이러한 유형에 대해서 질문입니다.만약 그렇다면,이것은 당신의 질문에 대답을 정확하게 합니다.

다른 팁

의 형식전 출력을의'쓰가 절대적으로 아무것도 을 표현으로 절입니다.

기본적으로 컴파일러 출력을 기록 구성 요소의 정렬 패딩 순서에 있는 그들은 기록에 기록 선언하여 번역 계획는지에 의해 정의된 표준(을 얻을 수 없습니다 그래서 간의 상호 운용성을 컴파일러).모기(GCC Ada 컴파일러)출력에서 각각의 구성 요소의 정수를 바이트 단위이다.

스트리밍하려는 경우에는 값을 사용하는 형식의 일부 다른 형식으로 무시할 수 있습'을 위해 쓰입니다.으로 특별한를 들어,당신은 스트림할 수 있을 XML.

기본적으로 컴파일러 순서를 구성 요소의 레코드 형식을 사용하지 않는 경우,pragma 팩 또는 pragma PRESERVE_LAYOUT 명령을 가진 당신의 레코드 형식입니다.또한,컴파일러 패드하는 객체의 정렬을 유지하기 위해 기록 구성 요소입니다.구성 요소를 따른다:

정수:8,16,32 비트 조로 보호

Float:32 비트 IEEE 형식

Long_Float:64-bit IEEE 형식

고정점:8,16,32 비트;그러나,범위와 델타에 지정된 영향을 미칠 수 있는 16 32

열거:정수,일반적으로 첫 번째 요소에 의해 표현 0

부울:열거체,8 비트 길이의 데이터베이스를 최신으로 유지하의 값을 저장합니다:0=false,1=true

캐릭터열거체,8 비트 길이,서명되지 않은 0~127

액세스 유형:32 비트,32 비트 0 값을 나타내는 NULL

배열:저장된 연속적으로 in row-major order,크기에 따라 기준형이다.배열이딩을 위해 모든 요소가 적절한 정렬을 위해 자신의 유형이 있다.

Ada95 언어 참조 매뉴얼 말(섹션 13.13.2):

"초등학교에 대한 유형,표현의 점에서 스트림 요소를 정의된 구현입니다.복합 형식을 쓰거나 읽기 속성에 대한 각각의 구성요소라는 표준다.정경의 순서로 구성은 지난 차원 다양한 가장 빠르게 배열에 대한,그리고 위치 집계하기 위해 기록이다."

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top