c++-modules相关内容
根据official documentation,Clang 13通过使用-fmodules命令行参数支持C++20模块。 我甚至无法在基于Intel或M1的Mac上使用Clang 13(MacOS蒙特雷)编译基本模块。 假定文件module.cpp的文本内容如下: export module a; export int f(int a, int b) { return
..
在重构项目以与模块一起使用之前,我编写了一个测试项目ExImMod,以查看是否可以像模块文档中所宣传的那样分离声明和定义。对于我的项目,我需要将声明和定义保存在单独的翻译单元(TU)中,根据模块文档,这也是可能的。我不想使用模块分区。 遗憾的是,我的测试ExImMod项目表明它们不能完全分开,至少对于Visual Studio 2022(STD:C++LATEST)编译器(VS22)是这样。
..
我阅读了此链接https://gcc.gnu.org/wiki/cxx-modules,并尝试从此网站复制以下示例。我已经知道这个编译器部分支持模块系统。(注意:我使用的是Windows) // hello.cc module; #include #include export module hello; export void greete
..
我在C++模块的上下文中看到一些对术语“权限”的引用,例如https://gcc.gnu.org/wiki/cxx-modules: Baz (); // Baz's declaration visible from purview Quux interface 什么是C++模块权限? 推荐答案 我们把这个问题分成三个部分: 什么是C++模块? 什么是权限? C++
..
我正在尝试将一个模块包括在另一个模块中,但由于以下错误而无法编译: ";无法生成以下源文件,因为它们之间存在循环依赖关系:module1.ixx依赖于module2.ixx。"; 我想要modClass1_CONTAINE modClass2_CLASS和modClass2_CONTAINE指向静态modClass1_的指针。 我尝试使用C++17头文件和源文件(
..
我最近一直在尝试使用GCC 11将一个代码库转换为C++20模块。然而,我在以下情况下卡住了。首先,下面是使用Header的方法: A.H class B; class A { public: void f(B& b); }; A.cpp #include "A.h" #include "B.h" void A::f(B& b) { //
..
Clang 和 MSVC 已经支持 Modules TS 来自未完成的 C++20 标准.我可以使用 CMake 或其他构建系统构建基于模块的项目吗? 我尝试了 build2,它支持模块并且运行良好,但我有一个 问题 关于它的依赖管理(UPD:问题已关闭). 解决方案 CMake 目前不支持 C++20 模块. 另请参阅CMake 问题跟踪器中的相关问题.请注意,与插入新的编译
..
在文档中说CLang中的模块支持是部分的.我正在使用LLVM 12.0的最新版本在Windows 64位下使用CLang. 我成功地设法使用了常规模块(通过 import modulename; 导入). 但是我还没有创建和使用标头单元模块,即您通过 import" header.hpp"; 导入的模块.您可以通过示例建议如何做到这一点吗? 为尝试头单元,我创建了下一个玩具文件:
..
我正在将我的旧代码转换为可作为c ++模块导入的内容.问题是我希望它仍然可以工作,并易于作为旧的标头/源代码版本进行维护.我该怎么做(如果可能的话). 是否可以创建一个导出标头内容的模块?(也可以使用其他任何可以维护旧的.cpp/.h文件和模块文件的解决方案) 玩具示例: //在vector.h中模板结构向量{T x,y;}//在.cppm中导出模块向量;/
..
使用clang编译c ++-20模块时.导入文件时,导入另一个文件,然后再导入第三个文件时,出现奇怪的编译错误: //a.cppm#include导出模块a;导出std :: string getStuffA(){返回"a";} //b.cppm#include导入出口模块b;导出std :: string getStuffB(){返回"b"+ getSt
..
我正在用clang进行模块的实验,并且希望将标准库作为模块而不是包含在模块中. 目前我正在这样做 #include#include 似乎您在msvc中应该能够导入标准库,例如 import std.core; 但是在使用clang时,这似乎没有实现或以其他方式实现. 我的问题是:是否可以像微软的建议那样导入stl-includes
..
我目前正在尝试在应同时在Windows(MSVC)和Linux(Clang和/或GCC)上编译的代码中使用c ++模块. 我目前正在Visual Studio中进行开发,并使用“标准符合模式"(/permissive-)使我的代码尽可能可移植. 但是以下代码: import std.core;int main(){std :: cout
..
提供一个模块 //a-m.cc导出模块A;进口B;进口C;导入"D.h";... 是否有一种调用gcc的方法(类似于-M对标头所做的操作),该方法将列出对其他模块和导入的标头(即B,C和"D.h")的直接依赖关系? 解决方案 我不知道gcc有什么办法,但是我建议编写一个辅助脚本来扩展文件并查找所有名为 import的东西.,那么您可能需要使用",""和"
..
在c ++ 20中,启用模块时,应该将每个include封装起来,以便顺序无关紧要,并且宏不会泄漏等. 显然问题 if 是否可以预编译多个标头是 我现在的问题是:如何您如何做到这一点:即:我如何首先预编译一组头文件,然后使编译器将它们(全部)识别为我的预编译头文件使用c ++ 20模块的翻译单元(使用linux命令行). 我想为g ++提供解决方案,但如果只有clang可行,那答
..
C语和未完成的C ++ 20标准中的模块TS .我可以使用CMake或其他构建系统来构建基于模块的项目吗? 我尝试了 build2 ,它支持模块并且效果很好,但是我有一个
..
以下简单的测试用例文件在使用 -fmodules 进行编译时,给出了Clang的github镜像中“ master”提示的编译时错误。命令如下所示。我想知道这是否是针对Clang的新实验性模块功能的错误-可能是标准库的模块映射的实现存在问题-还是我做错了什么。如果将 -fbuiltin-module-map 添加到命令中,错误仍然出现。有趣的是,如果我用 stdint.h 代替 cstdint ,
..
给出的基本示例“>如何在Clang中使用C ++模块?对我有用,但是不导入标准库(例如,通过 import std.stdio; );经过 http://clang.llvm.org/docs/Modules.html 之后尚不清楚如何在C ++模块中使用标准库,例如: // foo.cppm: 。导出模块foo; //起作用:#include //这些都不起作
..
我正在尝试将c ++模块TS与clang一起使用。 我创建了两个文件: // foo。 cppm 导出模块foo; 出口无效性测试(){ } 和 // bar.cpp import foo; int main(){ test(); 返回0; } 我编译 foo.cppm 使用此命令 clang ++ -
..
我最近一直在尝试MSVC提供的模块实现,并且遇到了一种有趣的情况。我有两个在其接口中具有相互依赖性的类,这意味着我将不得不使用前向声明来进行编译。以下代码显示了一个示例: 模块接口 导出模块FooBar; 导出名称空间FooBar { class Bar; Foo类{ public: Bar createBar(); }; class Bar { pub
..
如在此答案中所述所述,模板实例化通过不需要为每个新模板重新编译模板而减少了编译时间和大小。输入使用它们的每个新文件。 我也很高兴 C ++ 20模块应该提供一个干净的解决方案,以将模板暴露给外部项目并减少hpp / cpp重复。 允许它们一起工作的语法是什么? 例如,我希望模块看起来像(未经测试,因此可能是错误的代码,因为我的编译器不够新/不确定是否已实施): hellow
..