c++ 如何在模块中使用#include?

mjqavswn  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(92)
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++编译器。

e37o9pze

e37o9pze1#

根据cppreference.com:
模块和头单元
...

#include不应该在模块单元中使用(在 global module fragment 之外),因为所有包含的声明和定义都将被视为模块的一部分。相反,头部也可以通过 import declaration 作为 header units 导入:
export(可选)import*header-nameattr*(可选);

头单元是从头合成的独立翻译单元。头单元将使其所有定义和声明都可访问。预处理器宏也是可访问的(因为导入声明被预处理器识别)。
...
因此,尝试将#include <iostream>替换为import <iostream>;

相关问题