为什么这个C++程序不使用模块编译?

inkz8wg9  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(141)

很抱歉,如果我再问一次关于C中的“模块”。我在fedora 37 linux和vscode中使用ggcc-c++-12.2.1-4.fc37.x86_64。所以我说:我将用“C第三版之旅”这本书来升级我的知识,这本书更新到了C20标准。
第一个节目的内容是:

import std;
int main()
{
std::cout << "Hello, World!\n";
}

无法编译。我启用了“std=c20”和“-fmodules-ts”,还尝试了“-std=gnu20”。
输出如下所示,就像编译后的模块丢失了一样:

std: error: failed to read compiled module: No existe el fichero o el directorio
std: nota: compiled module file is ‘gcm.cache/std.gcm’
std: nota: imports must be built before being imported
std: error fatal: returning to the gate for a mechanical issue

好吧,这是西班牙语,因为这是我的母语。有什么帮助吗?

qlvxas9a

qlvxas9a1#

import std;

这行代码不仅需要模块支持,还需要C23的 * 标准库模块 *(P2465R3 Standard Library Modules std and std.compat)。从cppreference上的Compiler support for C++23页面可以看到,GCC libstdc仍然不支持它。
OP提到这个代码片段来自Bjarne的书,我仔细检查了1.2节,在包含import std;的代码片段的下一段中,它指出这还不是标准:
import指令在C++20中是新的,将所有标准库表示为模块std还不是标准。

相关问题