私は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