c++ - C++14/17 的模块提案是否可以(轻松)使用其他本地语言来生成模块?

标签 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/

相关文章:

c++ - Boost Spirit Rules可以参数化吗

c++ - 为什么 static_cast 不适用于 cv::Rect

c++ - 如何检测仅使用 cppcheck 从未使用的函数调用的函数?

c++ - 如何在 Qt 中有效地循环图像?

c++ - 成员错误 C2352 上的非静态链接

c++ - 如何通过字符串找到指向函数的指针

c++ - 在 C++ 中迭代链表比在具有类似内存访问的 Go 中慢

c++ - Boost 中的 Gamma 分布

c++ - 使用 vector 进行二进制搜索

c++ - 计算种子文件的信息哈希