이제 DLL 함수를 호출하기 위해 Interfaces.C 패키지를 통해 Ada에 표준 Boolean 유형을 전달하는 방법을 설명합니다. 부울 형식이 ANSI C에 없기 때문에 Interfaces.C 패키지에 Ada Boolean 형식이 없습니다. 내 보낸 함수 프로토 타입에 Bool 형식의 인수가있는 C++로 작성된 DLL 함수가 있습니다. DLL 내 보낸 함수를 호출하기 위해 Intefaces.C 패키지에서 어떻게 전달됩니까?Interfaces.C에서 Boolean Ada 유형을 전달하십시오.
답변
전통적으로 C에서는 부울이 int
유형으로 표시됩니다. C++에서 bool
유형이 정의되었지만 소문자 'b'에 유의하십시오. 인수가 Bool
인 경우 (대문자 'B'에주의하십시오), 유형 구현에 대해 더 자세히 알려줄 C++ 라이브러리의 어딘가에 클래스 선언이 있어야합니다. 일반적으로 이러한 Bool 클래스는 언어의 일부 아티팩트를 통해 표준 bool 유형과 호환됩니다. Bool 클래스는 가상 함수를 정의하지 않고 클래스의 정의에 우선적으로 배치 된 멤버에 값을 유지합니다.
나는 그것을 테스트하지 않았지만 int
유형으로 갈 수 있다고 말하고 싶습니다. 그것이 C++ 함수에 의해 받아 들여지는지 확인하기위한 테스트를해라. 부울을 int
으로 변환하는 경우 Interfaces.C.int(Boolean'Pos(your_bool_value))
과 같은 것을 사용할 수 있습니다.
Ada 참조 설명서 [B.3.62] : An implementation may provide additional declarations in the C interface packages.
에 명시된대로 Interfaces.C
의 구현을 확인하면 bool
유형의 정의가 포함될 수 있습니다.
'Bool'에 대해서는 모르겠지만 WinDef.h에서'BOOL'은 시스템에서'int'로 typedef되어 있습니다. –
type Boolean_2_Int is (Bool : Boolean := False) is
record
I : Interfaces.C.Unsigned_Long := 0;
case Bool is
when True =>
I := 1;
when False =>
I := 0;
end case;
end record;
- 1. Ada : optimize 프라그 머
- 2. ADA Real_time 문자열
- 3. Ada 및 어셈블리
- 4. Ada with Visual studio
- 5. Ada : aunit을 사용합니다.
- 6. Ada 매트릭스 패키지
- 7. Ada 동시성의 문제
- 8. Ada 무료 구현이 있습니까?
- 9. Ada/Eclipse 통합
- 10. Ada 문자열로 자르기
- 11. Compact Framework - Image.FromStream (Stream, Boolean, Boolean)의 모든 구현은 무엇입니까?
- 12. AJAX에서 boolean 값 전달
- 13. Boolean instanceof Object가 true입니까?
- 14. setVisible (boolean) 문제
- 15. enum과 Boolean 비교하기
- 16. "blinking"boolean with system.currentTimeMillis()
- 17. boolean [] PostgreSQL을 최대 절전 모드로 매핑
- 18. Ada Ada.Containers 명확한 절차 문제
- 19. Ada 버전 용 명령 줄?
- 20. 루프는 ADA 및 구현 아래
- 21. Ada 매뉴얼 : 주석과 통합의 차이
- 22. DotNetNuke는 현재 ADA 508을 준수합니까?
- 23. Adobe Flex 및 ADA 준수
- 24. Ada 별도 파일에 오류가 있습니다.
- 25. Ada IO Multiplexing on Linux
- 26. Ada : 2 차원 그래프를 그릴
- 27. Django의 objects.filter()에서 boolean 사용하기
- 28. StyleConstants.setBold의 boolean 인수의 의미는 무엇입니까?
- 29. OZ 프로그래밍 언어 : Boolean guard
- 30. actionscript number is between() : Boolean
각각 1과 0으로 변환 해 보았습니까? –
Adrien의 대답 중 일부만 백업하면 Bool은 어디에 정의되어 있습니까? –