首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用gcc/g++将模块拆分成多个文件的最佳实践

用gcc/g++将模块拆分成多个文件的最佳实践
EN

Stack Overflow用户
提问于 2022-04-30 19:54:38
回答 1查看 161关注 0票数 1

我希望有一个只包含模块中的声明的文件和一个或多个包含定义的文件。

根据How to split a module into multiple files的说法(以及12点04分的https://youtu.be/nP8QcvPpGeM ),我应该像这样分割我的文件:

Log.cpp:

代码语言:javascript
复制
export module Log;

int i = 0;
export void Log();

Log_imp.cpp:

代码语言:javascript
复制
module Log;

void Log() {
    std::cerr << "This is a log and i=" << i << "\n";
}

我可以分别用g++-11 -std=c++20 -fmodules-ts -c Log.cppg++-11 -std=c++20 -fmodules-ts -c Log_imp.cpp进行构建。

我的主程序只是导入日志模块并调用Log()函数。请注意,我必须同时链接Log.o和Log_imp.o,否则就会得到链接错误。

是否可以在不构建静态库的情况下为单个模块创建单个对象文件?如果没有,那么应该将模块链接到静态库中,还是保留多个.o文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-30 20:54:37

模块基本上是正交的连接过程。每个模块文件都是自己的翻译单元,因此将产生自己的对象文件。您可以将它们组合成一个库(或一个single object file),但否则,您将不得不链接到所有这样的对象文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72071734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档