在C ++中将代码清除为printf size_t(或:在C ++中与C99的%z最接近)
我有一些C ++代码可以显示size_t: size_t a; printf("%lu", a); 我希望在32位和64位体系结构上进行编译而不会发出警告。 如果这是C99,则可以使用printf("%z", a);。但是AFAICT %z在任何标准C ++方言中都不存在。所以我要做 printf("%lu", (unsigned long) a); 这真的很丑。 如果size_t语言中没有内置的用于打印s的功能,我想知道是否有可能编写一个printf包装器或诸如此类的东西,以便在size_ts 上插入适当的强制转换,从而消除虚假的编译器警告,同时仍保持良好的警告。 有任何想法吗? 编辑以弄清为什么我使用printf:我有一个相对较大的代码库正在清理。它使用printf包装器执行“写警告,将其记录到文件中,并可能由于错误而退出代码”之类的操作。我也许能够使用cout包装器来聚集足够的C ++-foo,但是我不想改变程序中的每个warn()调用只是为了摆脱一些编译器警告。