【发布时间】:2018-09-17 23:00:38
【问题描述】:
minigw-w64 支持哪些 C 版本?它使用 msvcrt.dll,所以它不只支持 ANSI C 吗?但后来我看到像 VLC 这样的程序使用它,但说它们需要 C11。这怎么可能?
编辑:一些来源:How to printf a size_t without warning in mingw-w64 gcc 7.1?
【问题讨论】:
-
一般来说:它通过调用 msvcrt 和它自己的实现的组合来实现 C 库。对于 msvcrt 有 bug 或缺少的地方,它会避免调用 msvcrt。
-
C语言版本不是由运行库决定的。 stackoverflow.com/questions/14737104/…
-
@HansPassant 这与 Minigw-w64 和 windows 无关。
-
同样相关,mingw-w64 捆绑 gcc。
-
这主要取决于使用的 gcc 版本。从 gcc 4.7 及更高版本开始支持 C11 语言,尽管 C11 标准库是独立的。 Mingw 确实使用了微软的垃圾标准库,它充其量是符合 C90 的。您可以折腾编译器开关
#define __USE_MINGW_ANSI_STDIO来获得 C11 stdio.h,但不能获得其他 C11 库。 See this,我刚刚发布了一个修复 stdio.h 的示例。
标签: c windows c11 msvcrt ansi-c