module;
#include <iostream>
export module modultest;
export class Test{
public:
Test(){}
void print(){
}
};
字符串
我想使用cout
创建一个print
函数,我需要<iostream>
,但是如果我包含iostream
,我会得到多个错误,例如:
error: redefinition of 'void operator delete(void*, void*)'
180 | inline void operator delete (void*, void*) _GLIBCXX_USE_NOEXCEPT { }
型
我在VSCode中使用g++编译器。
1条答案
按热度按时间e37o9pze1#
根据cppreference.com:
模块和头单元
...
#include
不应该在模块单元中使用(在 global module fragment 之外),因为所有包含的声明和定义都将被视为模块的一部分。相反,头部也可以通过 import declaration 作为 header units 导入:export(可选)import*header-nameattr*(可选);
头单元是从头合成的独立翻译单元。头单元将使其所有定义和声明都可访问。预处理器宏也是可访问的(因为导入声明被预处理器识别)。
...
因此,尝试将
#include <iostream>
替换为import <iostream>;
。