一张图片胜过一千个字:
我知道如何解决这个问题。但是如何在 Microsoft 中修复它,这样我什至没有收到警告?
编辑:
- 与其他人在评论中指出的相反,这是特定于Microsoft系统的。我可以在 linux 机器上运行完全相同的代码,在相同版本的 VsCode 中使用相同的配置(tasks.json 和 properties.json),使用相同版本的 gcc,我不会收到这些编译器警告.
- 我使用的 C 标准是 c17。
- 尝试在与格式相关的函数(如 printf 和 scanf)中使用“%z”(甚至“%ll”)等格式说明符将触发格式编译器警告,即使在完全更新的(截至 08/2021 年)Windows 10 操作系统中也是如此,使用最新的 mingw-64 工具链(特别是 gcc 8.1.0 - 这是这里使用的编译器)。
- 图像中显示的“编译器错误”实际上只是被视为错误的格式警告(引用编译器:“ [-Werror=format=] ”)
- 谢谢,“@忙蜂”。你试图解决这个问题。这确实是一个很好的解决方法,但它会影响开发兼容性。
编辑2:
在遇到导致实际意外错误的格式不兼容问题之后(以及在 Windows 上使用 GDB 的高级功能的糟糕经历之后),我决定在 Windows 上永远放弃 GNU。对于 Windows 机器上的 C 跨平台开发,我现在使用 Clang。到目前为止,我对这个决定 100% 满意。感谢所有花时间帮助我的人。