32 비트 및 64 비트 아키텍처 모두에서 실행/컴파일하려는 오픈 소스 프로젝트가 있습니다. 하지만 여기에 문제가 있습니다 : 그것은 동적 배열을 많이 사용하고, 너무 길게 엉망이 필요합니다. 동적 배열의 길이는 size_t
이고 길이는 64 비트의 경우 ulong
이고 32 비트 시스템의 경우 uint
입니다.
나는이 같은 형태의 코드를 가지고 :D에서 32 비트 및 64 비트 모두에서 컴파일 할 프로그램 설계
int i = 0;//this HAS to be int, not uint for some reasons
i = dynArray.length;//error, can't implicitly cast ulong to uint
내가 i
에 int
에 (32 비트)에와 long
(64 비트)가 필요합니다. size_t
이 문제를 해결했지만 unsigned
(uint
또는 ulong
)입니다.
내 질문은 다음과 같습니다. 즉, 32 비트에서 int
이고 64 비트에서 long
인 정수 데이터 형식을 어떻게 만듭니 까? 이
32bit{
//Declaration for 32 bit version
}else{
//Declaration for 64 bit version
}
당신은 ptrdiff_t를 원합니다. 방금 서명 한 size_t처럼. –
왜 항상 명시 적으로 캐스트하지 않습니까? –
@SamKuhmonen은 64 비트에서 uint를 사용하는 것은 넌센스이기 때문에 64 비트 용으로 컴파일 할 수 있기를 원합니다. – Nafees