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

相关推荐
南京状元郎2 天前
C++23新特性在CLion中的实战体验:从语法糖到生产力提升
c++23
耶耶耶耶耶~4 天前
C++23 高级编程 Professional C++, Sixth Edition(二)
c++·c++23
BerryS3N5 天前
C++23新特性在CLion中的实战体验:从语法糖到生产力提升
前端·c++23
lucky-billy6 天前
C++23 新特性
c++23
石山代码12 天前
C++23 新特性在 CLion 中的实战体验
开发语言·c++·c++23
华科大胡子15 天前
C++23 新特性在 CLion 中的实战体验:从语法到工具链的完整指南
c++23
2603_9552797015 天前
在 CMakeLists.txt 中设置 C++23 标准
java·linux·c++23
2603_9552797018 天前
C++23新特性在CLion中的实战体验
前端·javascript·c++23
lqqjuly2 个月前
C++ 完整知识体系—从基础语法到现代 C++23 的系统性总结
c++·c++23
ComputerInBook2 个月前
C++ 23 相比 C++ 20 新增之特征
开发语言·算法·c++23