LINUX SB 快照站

C++在20+版本模块化编程可能会出现的错误

原帖: linux.sb/topic/13026 · 共 3 楼 · 标题快照 2026-08-16 17:03:55

楼主
发帖 2026-08-16 17:01:36 · 快照 2026-08-16 17:03:55

模块分区问题

C++20的模块base:son;这不是传统意义上的子模块,跟确切的说是模块分区,本质上仍是同一个模块,
进而会引发一个问题,编译器找实现文件的时候,可能会报错找不到实现,原因是,模块分区的实现在本质上仍是传统所说的模块的实现,而不是模块分区的实现,
所以在写的时候就会发现,像实现文件写module base:son;是会报错的,正确来说,
按照C++20标准,实现文件的模块只能是module base;

#1
发帖 2026-08-16 17:42:29 · 快照 2026-08-16 17:42:50

对反直觉的是 一个模块partition的确只能是接口或者实现,不能像传统模块一样拆分成接口单元和实现单元

#2
发帖 2026-08-16 17:47:15 · 快照 2026-08-16 17:49:54
export module base:son;
export void foo(); 
module base;    
import :son;    
void foo() {
}