C++23中的import开发实践

一、模块的引入

在c++20中就引入import这个模块应用机制了。但限于编译器和环境的滞后性,短时间内不大可能广泛的应用起来。但这不代表着开发者可以忽视它,一个新技术的出现,不管最终的结果如何。都需要在实践中进行应用并反馈结果。那么在实际编程中如何使用这种机制呢,下面就以一个最简单的程序来给大家演示一下,让大家有一个逐步接受的过程。

开发的环境使用了ubuntu25.10,程序中默认的gcc的版本是gcc15.2,编译默认的C++标准为c++20。如果缺少相关的库或者编译环境限制,请根据提示自行安装即可,此处不再赘述。

二、一个最简单的程序

照老样子,先搞一个最简单的程序来看:

c 复制代码
import std;
int main(){
	std::println("this is first test!");
	std::cout<<"test"<<std::endl;
	return 0;
}

这个程序非常简单,但是,如果使用传统的编译方法如下面的方式:

复制代码
g++ -o test importDemo.cpp

则会产生下面的错误:

复制代码
error:'import' does not name a type

这说明用传统的编译的方法在目前是无法满足使用模块编译的情况的。

三、编译和处理

那么如何才能正确编译上面的代码呢?可以试着使用相关的编译命令:

复制代码
g++ -o test importDemo.cpp -std=c++23 -fmodules

但是会报下面的问题:

复制代码
g++ -o test importDemo.cpp -std=c++23 -fmodules
In module imported at importDemo.cpp:1:1:
std: error: failed to read compiled module: 没有那个文件或目录
std: note: compiled module file is 'gcm.cache/std.gcm'
std: note: imports must be built before being imported
std: fatal error: returning to the gate for a mechanical issue
compilation terminated.

通过上面编译结果分析,发现是少了文件"gcm.cache/std.gcm",而这个文件是怎么才能得到呢?经过查找资料发现,需要提前编译一下:

复制代码
g++ -std=c++23 -fmodules-ts -fsearch-include-path -c bits/std.cc

这个命令执行完成后,可以在当前目录中发现上面提到的文件以及一个std.o的文件。此时再使用"g++ -o test importDemo.cpp -std=c++23 -fmodules"则可以正确的编译程序了。然后执行编译后的程序则可以打印程序中的内容

四、总结

通过上面的一个最简单的基础入门的编译应用,大家可以很清楚的明白如何引入模块后的编译。通过这一简单的示例,大家就可以踏进C++模块开发的大门,开始自由的按照自己的意愿不断的学习和提升自己的能力。

相关推荐
混迹中的咸鱼6 天前
C++ 23种设计模式
设计模式·c++23
c++之路12 天前
C++23概述
java·c++·c++23
君鼎16 天前
C++23 新特性全面总结
c++23
charlie11451419116 天前
Cinux:用 C++23 从 MBR 写到 GUI 桌面的 x86_64 教学操作系统
c++23
charlie11451419121 天前
嵌入式C++开发第17篇:C++23特性收尾 —— 属性、链接与零开销抽象的最终证明
开发语言·c++·stm32·学习·c++23
Bender_ydc2 个月前
cnetmod 基于 C++23 模块和原生协程的跨平台异步网
c++23
cheungxiongwei.com3 个月前
使用 C++23 实现 Prompt DSL 的 Header-Only 解析器:从语法设计到工程落地
prompt·c++23
fpcc4 个月前
C++23中的模块应用说明之五综合应用和重点分
c++·c++23
fpcc4 个月前
C++23中的模块应用说明之三深入分析和混合编程
c++·c++23
fpcc4 个月前
C++23中的模块应用说明之二整体说明和导出控制
c++·c++23