小编Its*_* Me的帖子

无法导入 C++ 模块

我正在尝试使用模块在 C++ 20 中重建我的项目,以减少依赖性和编译时间。我尝试导入一些模块,并且可以这样做,但 Visual Studio 将导入语句标记为 undefined: "Could not find module file for..."。尽管它将其标记为错误,但我仍然能够编译并运行导入的函数(尽管如果它需要#include仅在模块中找到的单独函数而不是它导入到的 .cpp 文件,则它不允许我编译函数,给我一个链接器错误)。我密切关注微软的文档,并且能够在早期项目中使用模块,并且当时从未遇到过任何这些问题,并且我确保在该项目中重新建立相同的配置,但这种情况发生了。

我不太确定我还能提供哪些其他信息,但请询问是否有必要。任何帮助,将不胜感激

配置: 配置

作品

import Object;

#include <iostream>

int main() {
    calc(1, 5);
}
Run Code Online (Sandbox Code Playgroud)
export module Object;

export int calc(int a, int b) {
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

不起作用

import Object;

#include <iostream>

int main() {
    calc(1, 5);
}
Run Code Online (Sandbox Code Playgroud)
export module Object;

#include <iostream>

export int calc(int a, int b) {
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,存在多个链接错误: 与包括

无论哪种方式,VS都会将其标记为错误

编辑 通过将#include …

c++ import module c++20

6
推荐指数
1
解决办法
7971
查看次数

参考重新分配

我有一个通用的 C++ 问题。

假设我有这个代码:

int& GetInt()
{
    int* num = new int();
    return *num;
}

int numCopy = GetInt();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,返回的引用会发生什么?这个例子使用了一个简单的数据结构,所以它并不重要,但是在返回的数据更复杂的情况下,将变量分配给堆分配的变量引用,像这样将数据numCopy完全复制,或者将numCopy成为另一个参考原文num

c++ reference heap-memory

2
推荐指数
1
解决办法
67
查看次数

标签 统计

c++ ×2

c++20 ×1

heap-memory ×1

import ×1

module ×1

reference ×1