【问题标题】:Mingw-w64 C versions support?mingw-w64 C版支持吗?
【发布时间】: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?

http://www.mingw.org/wiki/c99

【问题讨论】:

  • 一般来说:它通过调用 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


【解决方案1】:

MinGW 使用 msvcrt.dll,但在需要时集成它以支持更新/固定功能,在某些情况下提供某些功能的完整重新实现(例如,您可以选择加入 GNU printf/scanf)。此类附加内容要么静态链接,要么提供到单独的 dll(mingw1.dll、IIRC)中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2012-01-18
    • 2020-06-19
    • 2014-07-23
    • 2021-01-12
    • 2014-10-24
    相关资源
    最近更新 更多