请问有人能解释一下它们的区别吗?我在网上查了很多,但还是感到困惑。
我正在使用VS2019。
MSVCRT和UCRT是Microsoft Windows上C标准库的两个变体。
MSVCRT(Microsoft Visual C++ Runtime)在所有Microsoft Windows版本中默认可用,但由于向后兼容性问题而停滞不前,不支持C99并且缺少一些功能。
UCRT(通用C运行时)是一个较新的版本,也是Microsoft Visual Studio默认使用的版本。它应该像使用MSVC编译代码一样工作和表现。
ucrt
和vcruntime
之间的关系,这也是问题所在。答案是,Microsoft将他们的CRT分成两个部分,一个特定于他们的编译器(vcruntime
),另一个对所有编译器都通用(ucrt
)。因此,如果您使用非Microsoft编译器(如Clang或GCC),则仍然会使用ucrt
,但不使用vcruntime
;vcruntime
仅应由Microsoft的编译器使用。来源:https://learn.microsoft.com/en-us/cpp/porting/upgrade-your-code-to-the-universal-crt?view=msvc-170 - Simon Kissane