我有一些 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
的工具,我想知道是否有可能编写一个 printf 包装器或类似的东西,将适当的强制转换插入到 size_t
中,以消除伪造的编译器警告,同时仍然保持良好的警告。
有什么想法吗?