32 비트 단위로 파일에 데이터를 저장하는 프로그램을 작성하고 있습니다 (한 번에 4 바이트 씩). 필자는 64 비트 Windows 시스템에서 코드를 작성했지만 사용 된 컴파일러는 32 비트 (mingw32)입니다. 현재 시스템에서 long int의 크기는 32 비트 (4 바이트)와 동일합니다. 현재 코드를 변경하지 않고 g ++로 다시 컴파일하여 다른 시스템에 코드를 이식하고 있습니다. 그러나 int 또는 long의 크기는 시스템에 따라 다르다는 것을 알게되었습니다. 그것은 헤더 파일에서 매크로를 사용하는 것과 같은 어떤 식 으로든 정수의 크기를 결정하여 int 또는 long을 코드의 데이터 유형으로 사용해야하는지 결정할 수 있습니까? 4 가지 다른 유형의 시스템에서 코드를 다시 컴파일해야합니다. 코드를 수정하여 각 시스템마다 4 개의 복사본을 만들면 정말 골칫거리입니다.시스템을 기반으로 정수 유형을 동적으로 결정합니다 (C++)
4
A
답변
10
int32_t
과 같은 표준 유형을 사용하고 싶습니다. 이 유형은 항상 32 비트입니다. 필자는 현재이 유형을 휴대용 데이터베이스 (berkeley db)에서 시스템 간 호환성을 위해 사용합니다.
here 모두를 참조하십시오.
이러한 정의를 얻으려면 stdint.h를 포함 시키십시오.
2
sizeof (int)를 사용하여 정수의 크기를 결정할 수 있습니다. 특정 크기를해야하는 경우
당신이 C99에서 제공하는 표준 솔루션으로 일반적인 문제입니다 stdint.h
3
에서 (또는 int64_t) int32_t 사용해야합니다.
The <stdint.h>
header은 특정 크기, 가장 빠른 크기 및 최소 크기의 정수를 제공하는 유형 집합을 정의합니다. 문제를 정확히 해결할 때 매우 유용합니다.
mingw32를 사용하는 것이 좋습니다. 불행히도 Microsoft가 마지막으로 stdint.h에 API를 제공하지 않았 음을 확인했기 때문입니다. 누군가가 Windows 용이 필요한 경우, 오픈 소스 버전이, 참조 : 이 http://code.google.com/p/msinttypes/
0
IMO 문제에 대한 최선의 방법은 int
, long long
, 등, 대신 플랫폼 독립적 형식 별칭을 사용하지 않는 것입니다 : int8_t
를 , int16_t
, int32_t
, int64_t
등
는 그들은 <stdint.h>
관련 문제
- 1. 이미지 로딩을 기반으로 셀 유형을 결정합니다.
- 2. (C#)로 캐스팅 할 형식을 동적으로 결정합니다.
- 3. jquery에서 선택한 요소 유형을 결정합니다.
- 4. UITableView : 동적으로 섹션 수를 결정합니다.
- 5. 동적으로 어떤 브라우저를 사용할지 결정합니다.
- 6. 커서를 참조 커서로 동적으로 결정합니다.
- 7. C# Unity - 동적으로 등록 된 유형을 확인하십시오.
- 8. struts2에 대한 역할을 기반으로 대상 URL을 결정합니다.
- 9. Castle Windsor는 속성 또는 설정 파일을 기반으로 동적으로 유형을 주입합니다.
- 10. 스레드를 동적으로 만들고 정수 전달
- 11. C++ 템플릿 함수 반환 형식을 결정합니다.
- 12. 어떤 동적 메서드를 호출 할 것인지 동적으로 결정합니다.
- 13. 유형을 동적으로 생성하지 못했습니다.
- 14. gettype()은 변수 유형을 기반으로 유형을 반환합니다. 내용을 기반으로 유형을 얻으려면 어떻게해야합니까?
- 15. 클래스의 속성 유형을 기반으로 C# generic 사전을 동적으로 만드는 방법은 무엇입니까?
- 16. Codeigniter 시스템을 따르십시오 : 모든 상태 유형을 선택하십시오.
- 17. 데이터를 기반으로 필드 유형을 확인하십시오.
- 18. iPhone 앱에서 통화 유형을 동적으로 변경하는 방법은 무엇입니까?
- 19. Web-Harvest는 테이블 열 머리글별로 데이터 유형을 결정합니다.
- 20. 파일 시스템을 기반으로 한 마인드 맵핑
- 21. 언제 stdint.h에 정의 된 정수 유형을 사용해야합니까?
- 22. 자바를 사용하여 파일에서 정수 유형을 찾는 방법
- 23. enum을 사용하여 정수 범위에 유형을 지정 하시겠습니까?
- 24. symfony 1.4 - 사용자 유형을 기반으로 한 경로
- 25. 번호를 기반으로 신용 카드 유형을 받으십시오.
- 26. 동적으로 테이블의 셀 유형을 변경합니다.
- 27. 동적으로 HTML 요소 유형을 변경하십시오.
- 28. 반환 유형을 동적으로 변경 하시겠습니까?
- 29. Android - 주변 타일을 기반으로 타일 비트 맵을 결정합니다.
- 30. 은 봄 보안의 역할을 기반으로 대상 URL을 결정합니다. 3.1
고마워요에 정의되어 있습니다. 나는 이것이 내가보고있는 것이라고 생각한다. :) – user1285419