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++模块开发的大门,开始自由的按照自己的意愿不断的学习和提升自己的能力。

相关推荐
fpcc9 小时前
C++23中的模块应用说明之一基础分析
c++23
Qt程序员16 小时前
从 C++11 到 C++23:枚举的原理升级与实践
c++·c++23
fpcc5 天前
C++23中的自定义模块开发
c++·c++23
Ivy_belief10 天前
C++新特性汇总:涵盖C++11到C++23
java·c++·c++11·c++23
Mr_WangAndy12 天前
C++23新特性_简化隐士移动和auto{}
c++·c++23·c++40周年·简化隐士移动·auto新用法
fpcc14 天前
C++23中的import使用CMake实践
c++·c++23
oioihoii14 天前
C++11到C++23语法糖万字详解
java·c++·c++23
你的冰西瓜15 天前
C++23 新特性详解:相较于 C++20 的主要改进
开发语言·c++·stl·c++23
Mr_WangAndy17 天前
C++23新特性_多维下标运算符
c++·c++23·c++40周年·多维下标运算符
Mr_WangAndy17 天前
C++23新特性_#warning 预处理指令
c++·c++23·c++40周年·c++23新特性·warning预处理命令