Bugün ilk defa projem için 64 bit yapı yaptım. Temel olarak, 64 bit boyut_t türü ve basit int türü arasındaki uyumsuzluktan şikayet eden uyarılar haricinde derlenmiş, bağlanmış ve çalışır durumda.64bit C++ 'da size_t ve int türleriyle ilgili sorunlar nasıl önlenir?
void func(std::vector<Something> &vec)
{
int n = vec.size();
for (int i=0; i < n; i++)
{
....vec[i]....
}
}
Bu düzeltmek için oldukça kolaydır, ve ben bir yerine döngü endeksleri olarak size_t ya ptrdif_t kullanmak gerektiğini söyleyerek bir makale okudum: Bu çoğunlukla benim kodunda böyle durumlarda oluşur. Ama böyle bir durumda ne yapabilirim?
void outsideLibraryFunc(int n);
void func(std::vector<Something> &vec)
{
int n = vec.size();
outsideLibraryFunc(n);
}
ben int türünde bir argüman beklediği dışında kütüphanenin işlevi bildirimi, değiştiremez, ve bunu vektör elemanlarının sayısını geçmesi gerekiyor. Derleyici uyarılarını devre dışı bırakmaktan başka ne yapabilirim?
+1'de Q: ben bunu bilmiyordum size_t! = Imzasız int – pm100
@ pm100 It * olabilir * ve 32-bit sistemlerin çoğunda olabilir, ama olması gerekmiyor. Özellikle, LP64 veya LLP64 sözleşmelerini (en modern 64 bit sistemlerini) kullanan 64 bit sistemlerde, "imzasız bir int" den daha büyük olma eğilimindedir. –
ssize_t bazen imzalı bir size_t için kullanılabilir. – user318904