<分区>
这听起来很奇怪,
但我在考虑模块提案,并想知道是否有可能例如在未来的 Haskell 代码中可以以 C++ 可以使用它的方式公开(作为模块)(让我们说 T 的列表
Haskell 映射到 vector<T>
).
那么模块是否使这变得容易、可能,或者与当前状态 (C++11) 相比没有变化?
标签 c++
<分区>
这听起来很奇怪,
但我在考虑模块提案,并想知道是否有可能例如在未来的 Haskell 代码中可以以 C++ 可以使用它的方式公开(作为模块)(让我们说 T 的列表
Haskell 映射到 vector<T>
).
那么模块是否使这变得容易、可能,或者与当前状态 (C++11) 相比没有变化?
最佳答案
这可能,但我怀疑它会让事情变得更容易。我的理解是,从模块导出的信息的二进制格式是特定于编译器的,因此它不会提供平台上所有编译器共享的通用 ABI。 C 被用作语言之间的粘合剂的原因是大多数平台上的 C ABI 非常简单并且是固定的,所以它不是一个移动的目标。 C++ 实现需要更丰富的 ABI(名称修改格式、异常层次结构、对象布局、vtable 布局、RTTI 表示等),而模块不会改变这一点。
关于c++ - C++14/17 的模块提案是否可以(轻松)使用其他本地语言来生成模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13990683/