众所周知,C++23 支持标准库模块。 直到 2023 年 5 月,MSVC 都支持它,但我们需要手动添加标准库模块,如Microsoft 博客所述。 但是如何在CMake项目中使用import std呢? 微软博客没有提到它。 而这些文件不能工作。( std.ifc文件取自微软博客教程: cl ...
众所周知,C++23 支持标准库模块。 直到 2023 年 5 月,MSVC 都支持它,但我们需要手动添加标准库模块,如Microsoft 博客所述。 但是如何在CMake项目中使用import std呢? 微软博客没有提到它。 而这些文件不能工作。( std.ifc文件取自微软博客教程: cl ...
我有一个包含 2 个项目的解决方案: 一库static(杏仁) 使用该 static 库的项目(沙盒) 除了我使用的是 C++20 模块外,我正在观看和关注 The Cherno 的游戏引擎系列。 他通过git submodule add了spdlog 。 我做了同样的事情。 然后我将$(Solut ...
按照 Microsoft 的说明,我无法构建 std 模块并且没有版本控制错误,所以我继续并添加了文件: C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.35.32213\modules\std.ixx ...
我在这个论坛上看到一篇文章: Apple Clang 13 C++20 Module Support Missing 但它有点编译,我想用模块制作一个 cmake 的项目。 但我不知道该怎么做。 我一直在寻找这方面的信息,但我找不到上面的链接.. ...
我正在测试 C++ 中的模块,但我不断收到以下错误: linker input file unused because linking not done 和 这是我编写的以下代码: 模块:A.cppmexport module A; export namespace Lib_A { in ...
我目前正在玩 C++ 模块,试图使我们公司的代码 C++ 基础现代化,以将模块用于核心功能。 特别是即将推出的 C++23 std模块,它作为预编译头文件的更好替代品似乎非常有趣。 所以我使用的是Visual Studio 2022 17.5 Preview 2.0,它初步支持std模块。 顺便说一 ...
我正在编写一个仅模板化的 header 库。 它没有state,没有全局变量,没有需要编译的.cpp。 是否可以将其作为模块导出/使用? 如何? 有什么好处? 有哪些陷阱? 我可能希望用户拥有一些方便的宏。 那些呢? 我找到了一个使用#ifdef...的示例来满足模块和老式案例的需求。 我想我想避 ...
私有模块片段是否可以像实现源文件一样用于打破循环依赖? 此示例使用 Visual Studio 2022 预览版。 这是一个在没有私有模块片段的情况下成功编译的示例,我希望您如何解决这个问题。 ModuleA.ixx ModuleA.cpp ModuleB.ixx ModuleB.cpp main. ...
我正在使用从源代码构建的 clang-git 16.0.0 在 Arch Linux 上使用 clang 创建一个简单的共享库。 库名为 libsum,它提供 function 来计算两个整数的和。// liba.cc export module liba; namespace space { ...
我正在尝试将我的一些 C++ 代码库从使用 header 文件转换为使用模块。 这是编译和工作的.h / .cpp对:// Graph.h #pragma once #include <QSet> template<class NodeT> struct GraphTyp ...
在一个有分区的模块中,我注意到如果一个分区导入另一个分区,则第二个分区导入的所有内容在第一个分区中也可见。 这是正确的行为还是编译器中的错误? 我正在使用 VS2022。 假设我们有一些模块 Foo: 我们还有另一个带有两个分区的模块 Bar: 第一个分区导入模块 Foo: 第二个分区导入第一个分 ...
考虑这个例子马.cpp: MB.cpp: MA-PA.cpp: 主.cpp: CMakeLists.txt: 使用 GCC(v 12.2): g++ -std=c++20 -fmodules-ts编译示例时,报错: 用Visual Studio 2022(v 17.4.1)编译时,报类似的错 ...
§10.4/3详细给出了decl-reachable的所有可能情况。 但是,我不能完全理解它。 考虑§10.4/6中描述的示例:Source file "foo.h": namespace N { struct X {}; int d(); int e(); inline i ...
一些消息来源说编译器解析模块并创建抽象语法树(AST),然后在解析导入模块的所有代码文件时使用它。 与 #include 头文件相比,这将减少编译器必须执行的解析量,但是对于导入模块的每个代码文件,所有内容仍然必须编译一次。 其他消息来源说模块只编译一次。 模块是如何以及何时编译的,这对编译时的内 ...
所有关于模块的文献都是最近才出现的,我正在为一个核心概念而苦苦挣扎。 当我制作自己的模块时,在链接过程之后,是否存在一种常规或可接受的方式 package 这些模块将它们作为库分发? ...
我有 3 个文件,分别是 engineering.cpp、engineering.ixx 和 system.ixx。 内容简要如下: 系统.ixx: 工程.ixx 工程.cpp 在另一个 cpp文件中,我将其用作: 该项目编译和运行良好,但在engineering.cpp智能感知给出99+ 错误和 ...
C++ 项目,在其版本 14 上使用Clang ,Windows 作为操作系统,语言级别高达c++20 。 所以采取下一个代码: main.cpp编译为: clang++ --std=c++20 -stdlib=libc++ -fmodules -fimplicit-modules -fbuil ...
导出模块命名空间变量时会发生这种情况。 它按预期编译和工作,但 Intellisense 似乎不同意。 它是智能感知错误还是具有副作用的未定义行为? 尝试了未命名/匿名命名空间与 static 函数,但仍然出现相同的错误。 环境:windows11 VS2022 ISO C++latest,带有 E ...
我想从 C++ 模块中引用非模块外部( extern )函数。 不幸的是,使用普通方法 pre-Modules 似乎不起作用: 在 Visual Studio 2022 中产生此问题: error LNK2019: unresolved external symbol "unsigned ch ...
我在一个文件夹中创建了一个 TestModule.ixx,我想在我的 cpp 项目中使用import TestModule (在不同的文件夹中)。 我试过TestModule=E:\XXX\TestModule.ixx.ifc; 在属性-> 附加模块依赖项中,但出现错误 lnk2019。 ...