`import`和`#include`之间的区别?cp20
我不明白为什么
- 我在这里看到
import std.core; - 我不能
import std; - 我不能
import std.iostream; - 我可以
#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>;
为什么会这样?
回答
我不明白为什么
- 我看到了 import std.core; 这里
你看到了你所做的,因为你阅读了页面,这就是写在那里的内容。
- 我无法导入 std;
这是因为 C++20 标准库没有定义模块。并且因为没有其他库可以(或不应该)定义模块,std因为该模块名称是为语言实现/未来标准化保留的。
- 我无法导入 std.iostream;
见 2。
- 我可以
#include <iostream>
该头文件是 C++20 标准库的一部分。
那为什么 1. 有效?
MSVC 文档解释了:
尽管 C++20 标准未指定,但 Microsoft 允许将其 C++ 标准库的实现作为模块导入。
PS 对模块的支持在编写时仅由所有主要编译器部分实现,但 MSVC 除外,自 19.28 以来似乎已完全实现(模块化标准库不是此要求)。
PPS 模块化标准库计划用于 C++23。