我正在研究在我的寵物項目中使用C++模塊TS的機會。對我來說,一個重要的用例是包裝傳統的標題。如何從不使用`export`關鍵字的模塊導出函數和類?
假設我有一些函數和類頭文件,std.io.ixx:
cl /c /experimental:module /module:name std.io /module:export std.io.ixx
:
int f(int x)
{
return 2 + x;
}
根據this article,我使用下面的命令編譯模塊
這給我一個新的文件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
關鍵字來解決此問題,但對於包裝傳統標頭的用例而言,這是不可能的。
我在做什麼錯了?如何從頭中導出所有可能的標識符?