我正在研究在我的宠物项目中使用 C++ Modules TS 的机会。对我来说,重要的用例之一是包装遗留标头。
假设我有一个包含一些函数和类的头文件std.io.ixx:
int f(int x)
{
return 2 + x;
}
根据这篇文章,我使用以下命令编译模块:
cl /c /experimental:module /module:name std.io /module:export std.io.ixx
这给了我一个新文件std.io.ifc
。然后我在另一个源文件main.cxx中使用这个模块:
import std.io;
int main()
{
f(5);
}
使用以下命令编译:
cl /c /experimental:module main.cxx
编译给了我以下错误:
main.cxx(5): error C3861: 'f': identifier not found
因此,正如我们所见,模块中的标识符没有被导出。export
我可以通过在要导出的每个标识符之前手动添加关键字来解决此问题,但这对于包装遗留标头的用例是不可能的。
我做错了什么?如何从标头中导出所有可能的标识符?