栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

转换为Windows后,C程序显示%zu

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

转换为Windows后,C程序显示%zu

正如注释中的错误报告讨论所建议的那样,Microsoft的

printf
功能不支持C99。mingw-w64项目提供了替代功能,如果
__USE_MINGW_ANSI_STDIO
在包含任何标头之前或在命令行上将宏设置为1
,则它们可以像正常的C99功能一样使用。它们支持标准
%zu
%jd
等格式说明符,即使最新的MSVCRT版本也不支持。您可以直接使用调用该函数
mingw_printf
,但通常只需将上述宏定义为1并调用
printf
,这样会更容易。

值得注意的是,如果使用Microsoft的

snprintf
,如果缓冲区不够大,它将返回-1表示截断,除非buffer和buffer
size参数分别为
NULL
和0,在这种情况下,将输出的字节数为回。C99的行为是始终返回如果缓冲区足够大时将输出的字节数,如果出现编码错误则返回负值,并且mingw-w64实现似乎按照C99正确地运行。

为了使用所有这些标准行为,您需要做的只是

#define __USE_MINGW_ANSI_STDIO1
在使用任何
printf
函数之前都包含在其中,或者只是添加
-D__USE_MINGW_ANSI_STDIO=1
到编译器调用中。

If you are worried about the macro interfering with other platforms, no other
implementation except the original (legacy?) MinGW[32] project that provided
similar functionality should actually make use of this preprocessor macro, so
it is safe to define it unconditionally.



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/412403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号