gpt4 book ai didi

c++ - 在 C++ 中清理代码以 printf size_t(或 : Nearest equivalent of C99's %z in C++)

转载 作者:IT老高 更新时间:2023-10-28 11:56:43 27 4
gpt4 key购买 nike

我有一些打印 size_t 的 C++ 代码:

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 上插入适当的类型转换>s 以消除虚假的编译器警告,同时仍然保持良好的警告。

有什么想法吗?


编辑 澄清我使用 printf 的原因:我有一个相对较大的代码库,我正在清理它。它使用 printf 包装器来执行诸如“写入警告,将其记录到文件,并可能以错误退出代码”之类的操作。我可能能够收集足够的 C++-foo 来使用 cout 包装器来执行此操作,但我宁愿不要更改程序中的每个 warn() 调用只是为了摆脱一些编译器警告。

最佳答案

printf 格式说明符 %zu 可以在 C++ 系统上正常工作;没有必要让它变得更复杂。

关于c++ - 在 C++ 中清理代码以 printf size_t(或 : Nearest equivalent of C99's %z in C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1546789/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com