C cinsinden size_t
türünde bir değişken yazdırmak istiyorum, ancak farklı mimarilerde farklı değişken türlerine size_t
eklenmiş gibi görünüyor. Örneğin, bir makinede (64-bit) Aşağıdaki kod herhangi bir uyarı atmak değildir:Platform bağımsız size_t Format belirleyicileri c?
:size_t size = 1; printf("the size is %ld", size);
ama benim diğer makinede (32-bit) Yukarıdaki kod aşağıdaki uyarı mesajı üretir
uyarı: biçimi '% ld', 'uzun int *' ama argüman 3 tip vardır 'size_t *' Bu işaretçi boyutundaki farktan kaynaklanmaktadır şüpheli
yazın beklediğini üzerinde böylece benim 64 bit makine size_t
, bir long int
("%ld"
) için takma addır, ancak 32 bit makinemde size_t
başka bir türe sahip.
size_t
için özel bir biçim belirteci var mı?
Uyarı mesajınız kodla eşleşmiyor. Uyarı, işaretçilerden söz eder, kodunuzda hiç yoktur. Bazılarını '&' kaldırdınız mı? – Jens
İşaretçiler? Hayır, işaretçiler hakkında herhangi bir uyarı almıyorum, aslında bu kodu hangi makinede çalıştırdığına bağlı olarak bazen uyarı alamıyorum. Aşağıdaki sınama kodunu deneyin: #include int main() { size_t size = 1; printf ("boyut% ld", boyut); geri dönüş 0; } –
Ayrıca bkz. [Cross_t türünde değişkenler için çapraz platform biçimi dizesi] (http://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size-t) . – legoscia