A: yazan bazı C ++ kodum var size_t
:
size_t a;
printf("%lu", a);
Bunun hem 32 hem de 64 bit mimarilerde uyarı olmadan derlenmesini istiyorum.
Bu C99 olsaydı kullanabilirdim printf("%z", a);
. Ancak AFAICT %z
herhangi bir standart C ++ lehçesinde mevcut değildir. Yani bunun yerine yapmalıyım
printf("%lu", (unsigned long) a);
ki bu gerçekten çirkin.
size_t
Dilde yerleşik yazdırma olanağı yoksa size_t
, iyi olanları korurken sahte derleyici uyarılarını ortadan kaldırmak için s üzerine uygun dökümleri ekleyecek bir printf wrapper veya böyle bir şey yazmanın mümkün olup olmadığını merak ediyorum .
Herhangi bir fikir?
Düzenle printf'i neden kullandığımı açıklığa kavuşturmak için: Temizlediğim nispeten büyük bir kod tabanım var. "Bir uyarı yaz, bir dosyaya kaydet ve muhtemelen bir hata ile koddan çık" gibi şeyler yapmak için printf sarmalayıcıları kullanır. Bunu bir cout sarmalayıcısı ile yapmak için yeterli C ++ - foo toplayabilirim, ancak bazı derleyici uyarılarından kurtulmak için programdaki her warn () çağrısını değiştirmeyi tercih etmem.