2015-01-06 1 views
0

저는 현재 일부 응용 프로그램에서 longbool을 사용하는 작은 응용 프로그램을 포팅 중이며, 찾을 수있는 경우 bool64 유형을 사용했습니다. 형식을 in64로 변경 한 다음 true/false를 찾기 위해 0을 설정/확인하지만 bool64를 사용 가능하게하는 방법이 있다면 사용하는 것이 큰 문제는 아닙니다.bool64 유형은 어디에 있습니까?

누구나 알고 계십니까?

+0

부울은 두 값 (true 및 false)을 포함합니다. 'LONGBOOL'은 WinAPI에서 사용되는 데이터 유형과의 호환성을 위해서만 존재합니다 (다른 유형과의 호환성을 위해 존재 함). Bool64 유형은 없으며 결코 존재하지 않았을 가능성이 높습니다. 어떤 용도로 사용할 수 있습니까? –

답변

2

부울 유형은 64 비트입니다. 부울 유형은 documentation에 나열되어 있습니다

4 개 미리 정의 된 부울 유형은 부울입니다, ByteBool, WordBool 및 LongBool을. 부울이 선호되는 유형입니다. 다른 언어는 다른 언어 및 운영 체제 라이브러리와의 호환성을 제공하기 위해 존재합니다.

부울 변수는 1 바이트의 메모리를 차지하고 ByteBool 변수는 1 바이트를 차지하며 WordBool 변수는 2 바이트 (한 단어)를 차지하고 LongBool 변수는 4 바이트 (2 단어)를 차지합니다.

따라서 부울 역할을하는 64 비트 유형이 필요하면 64 비트 정수를 사용해야합니다. Boolean에서 암시 적 캐스트 연산자를 사용하여 향상된 레코드로 구문을보다 쉽게 ​​적용 할 수 있습니다.

왜 64 비트 부울이 필요한지 상상할 수 없습니다. 나는 그런 타입을 사용하는 라이브러리를 보지 못했습니다. 네가 잘못 생각하는지 궁금해.

+0

나는 longbool (typecast 또는 직접) 묶음을 사용하는 클라이언트의 중간 크기 32 비트 프로젝트로 이식하고 있는데, "longbool = bool64; 있다면 이걸로 아주 빨리 끝내야 해. 이 계약은이 앱을 64 비트로 이식하는 것이므로 (그렇지 않으면 최적화 또는 개선하지 않음) 최저 비용으로 매분 (따라서 달러) 문제가 발생합니다. – Marladu

+1

막대기의 끝이 잘못되었습니다. 포인터 이외의 32 비트 유형을 64 비트로 변경할 필요가 없습니다. 정수는 모든 플랫폼에서 32 비트 폭입니다. 32 비트에서 64 비트 사이의 부동 소수점 형을 원하지 않으므로 32 비트와 64 비트 버전간에 비 호환성이 발생합니다. 그리고 LongBool은 interop에 사용됩니다. 32 비트로되어 있습니다. 64 비트 유형을 사용하면 상호 운용성이 작동하지 않습니다. 필자는 동일한 소스에서 32 비트 및 64 비트 버전으로 컴파일되는 대형 응용 프로그램을 유지하면서 얻은 경험을 토대로이 모든 것을 작성합니다. –

+0

전형적인 간단한 작은 응용 프로그램을 사용하면 Win64 대상을 추가하고 전혀 변경하지 않을 것입니다. 정수 포인터를 캐스팅했다면 정수가 아닌 NativeInt를 캐스팅합니다. 또는 다시 작성하십시오. 캐스트없이. 그러나 일반적으로 조건 코드가 필요하지 않으며 주석에 표시된 것과 같이 별칭이 필요하지 않습니다. –

관련 문제