我们在C++20中有模块,我们能完全删除代码中的#include吗?
例如,我们可以写
import boost.asio;
...而不是
#include <boost/asio.hpp>
...在过去,我们需要这些步骤来安装库:
/usr/include.
在C++20中,我们可以:
/usr/lib./usr/lib.但是,用CMIs发布库会带来问题:
guess).
/usr/include/c++-modules,我的
这不是用CMIs替换头的好方法。那么,我们如何从C++中完全删除标头呢?
我不是在谈论标准库,因为模块化的c++标准库是在c++23中引入的。
发布于 2021-07-19 22:55:16
模块不是一种二进制分发机制;您应该期望以非常的方式提供模块接口文件(即编译到库中的对象文件(这些文件不是头文件)的模块接口文件,并将CMI生成和缓存留给客户端的编译器和构建树(分别)。因此,只有在使用给定模块的第一转换单元之后,每个客户端才能实现构建速度效益。
其他共享机制很可能会在实践中出现,但重要的是,它在本质上并不比现有的构建策略更复杂或更不兼容。
https://stackoverflow.com/questions/68442615
复制相似问题