【发布时间】:2020-11-15 11:32:07
【问题描述】:
使用以下 MCVE:
import std.core;
int main()
{
__int64 t = time(nullptr);
return 0;
}
我收到投诉
C:\...\main.cpp(9,1): error C2129: static function '__int64 time(__int64 *const )' declared but not defined
我正在编译 Debug/Win32。运行时库是/MDd。我有/std:c++latest 和/experimental:module 设置;命令行选项是
/JMC /experimental:module /permissive- /GS /analyze- /W3 /Zc:wchar_t /I"../../external/fmt-master/include" /ZI /Gm- /Od /Fd"Debug\vc142.pdb" /Zc:inline /fp:precise /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /std:c++latest /FC /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\modules.pch" /diagnostics:column
访问std::cout、std::string、srand 或sin 没有问题。什么可以告诉 Visual Studio 也找到 time 函数?
【问题讨论】:
-
c++ 标准库没有收集到模块中。因此,无论
std.core是什么,它都是 Visual Studio 提供给您的。所以你应该去寻找他们的文档。 -
关于标准库对模块的支持的 Visual Studio 文档位于 docs.microsoft.com/en-us/cpp/cpp/modules-cpp?view=vs-2019。 “虽然 C++20 标准没有指定,但 Microsoft 允许将其 C++ 标准库的实现作为模块导入。”
-
我猜这就是他们所说的“实验性”和“模块没有完全实现......”的意思。
标签: c++ visual-studio c++20 c++-modules