У меня есть проект с открытым исходным кодом, который я хочу запустить/скомпилировать как на 32-битной, так и на 64-битной архитектуре. Но здесь возникает проблема: он много использует динамические массивы, и ему тоже нужно объединять свою длину. Динамические массивы имеют длину, хранящуюся в типе size_t
, то есть ulong
на 64 бит и uint
на 32-битных системах.
У меня есть код, который выглядит примерно так:Проектирование программ для компиляции на 32 бит и 64 бит в D
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
).
Итак, мой вопрос заключается в следующем: как создать целочисленный тип данных, который равен int
на 32 бит и long
на 64 бит? Будет ли что-нибудь подобное ?:
32bit{
//Declaration for 32 bit version
}else{
//Declaration for 64 bit version
}
Вы хотите ptrdiff_t. Как только size_t только что подписан. –
Почему бы не указать явно, если он всегда будет соответствовать? –
@SamiKuhmonen, потому что использование uint на 64 бит - это бред, я хочу иметь возможность воспользоваться компиляцией для 64-битного. – Nafees