使用C# interop,我需要调用第三方C库中的函数。C函数需要一个std::optional
参数:
void FunctionToCall(std::optional<wchar_t const*> arg)
我想我必须将std::optional
建模为包含bool和指针的结构体。但是我没有找到任何关于std::optional
的内存布局的信息。内存布局甚至可能是特定于编译器的。所以,以防万一它会有所不同:C库看起来像是用Microsoft VC编写的。
所以我的问题是VC++中std::optional
的内存布局是什么?如何正确进行互操作?
1条答案
按热度按时间y53ybaqx1#
使用clang的
pahole
工具,结果如下Godbolt:https://godbolt.org/z/r4KTfYKoW
最终这相当于