`import`和`#include`之间的区别?cp20

我不明白为什么

  1. 我在这里看到import std.core;
  2. 我不能 import std;
  3. 我不能 import std.iostream;
  4. 我可以 #include <iostream>

你能解释为什么会发生上述情况吗?也许我猜std.iostream不是一个模块。那为什么1.有效呢?

@Someprogrammerdue 提供了这个参考,它说

import <iostream>;         // import declaration

当我在编译器中运行以下时

import <iostream>;

int main()
{

    return 0;
}

我得到

main.cpp:1:8: error: 'iostream' was not declared in this scope
    1 | import<iostream>;

为什么会这样?

回答

我不明白为什么

  1. 我看到了 import std.core; 这里

你看到了你所做的,因为你阅读了页面,这就是写在那里的内容。

  1. 我无法导入 std;

这是因为 C++20 标准库没有定义模块。并且因为没有其他库可以(或不应该)定义模块,std因为该模块名称是为语言实现/未来标准化保留的。

  1. 我无法导入 std.iostream;

见 2。

  1. 我可以 #include <iostream>

该头文件是 C++20 标准库的一部分。

那为什么 1. 有效?

MSVC 文档解释了:

尽管 C++20 标准未指定,但 Microsoft 允许将其 C++ 标准库的实现作为模块导入。

PS 对模块的支持在编写时仅由所有主要编译器部分实现,但 MSVC 除外,自 19.28 以来似乎已完全实现(模块化标准库不是此要求)。

PPS 模块化标准库计划用于 C++23。


以上是`import`和`#include`之间的区别?cp20的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>