如何让MinGW GCC识别size_t对应的%zu格式说明符?
一图胜千言:
我知道怎么规避这个问题,但我要怎么从微软层面彻底解决它,让我连警告都收不到?
补充说明
- 和评论区其他人指出的内容相反,这个问题是微软系统特有的。我可以在Linux设备上运行完全相同的代码,在相同版本的VsCode中使用相同的配置(
tasks.json和properties.json)、相同版本的gcc,不会出现这些编译器警告。 - 我使用的C标准是c17。
- 哪怕在2021年8月已完全更新的Windows 10系统、搭配最新的mingw-64工具链(具体是本次使用的gcc 8.1.0版本)的环境下,在printf、scanf这类依赖格式说明符的函数中使用
%z甚至%ll这类格式说明符,都会触发编译器格式警告。 - 图中显示的“编译器错误”实际上是格式警告被当做错误处理了,编译器原文为:
[-Werror=format=]。 - 感谢@the busybee,你尝试解决了这个问题,这确实是个不错的规避方案,但是会影响开发兼容性。
后续补充
在遇到格式不兼容问题引发实际非预期bug,同时在Windows上使用GDB高级功能的体验也非常糟糕之后,我最终决定彻底放弃在Windows上使用GNU工具链。现在我在Windows设备上做C语言跨平台开发时改用Clang,到目前为止我对这个决定完全满意,感谢所有花时间帮忙的人。
内容的提问来源于stack exchange,提问作者user12566332
相关产品推荐
相关产品推荐

