C++ 键入时#include<;iostream>;,是否包含模板?
我只是想知道,如果你键入C++ 键入时#include<;iostream>;,是否包含模板?,c++,C++,我只是想知道,如果你键入#include,你就包括了地图模板。它包括一个头文件。它可能包含模板,但也可能只包含#define语句、函数原型等。尖括号()只需告诉编译器它应该如何查找文件(与引号相对)。该文件的内容是无关的,它可以包含任何内容 #include和模板映射中的尖括号没有任何相关性。语法只是将相同的字符用于完全不同的目的。至少考虑到当前大多数编译器处理模板的方式,是的。具体地说,大多数编译器需要先“看到”模板的定义,然后才能让您实例化该模板 在C++03之前,(理论上)有一个expo
#include
,你就包括了地图模板。它包括一个头文件。它可能包含模板,但也可能只包含#define
语句、函数原型等。尖括号(
)只需告诉编译器它应该如何查找文件(与引号相对)。该文件的内容是无关的,它可以包含任何内容
#include
和模板映射
中的尖括号没有任何相关性。语法只是将相同的字符用于完全不同的目的。至少考虑到当前大多数编译器处理模板的方式,是的。具体地说,大多数编译器需要先“看到”模板的定义,然后才能让您实例化该模板
在C++03之前,(理论上)有一个
export
关键字可以消除这一要求,但大多数编译器从未实现过它,即使是实现了它的极少数编译器,也没有在大多数类似的库中使用它。根据C++11标准,标题中包含这一点
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
}
#包括
#包括
#包括
#包括
名称空间标准{
外间流cin;
外部环境;
外部奥斯特雷姆塞尔;
外部奥斯特雷姆阻塞;
外用wistream-wcin;
外部输出;
外部沃克尔;
外部工作日志;
}
其中包括很多模板
早期的标准没有明确说明头
必须包含哪些内容,只是它应该声明流 选择字符的一个主要原因是
和“
都不是文件名中常用的字符,因此它们是很好的文件名分隔字符
使用类似的逻辑,C++代码中既没有出现<代码> >代码也没有代码> <代码>,因此字符可以用来分隔模板参数。
因此,虽然选择
的逻辑是相似的,但实际分隔的名称是不相关的。您是否尝试查看该标题?@CarlNorum:第一行可能是“查看者自行决定”;)说真的,它通常不会被凡人阅读。谢谢。那么,为什么我们使用尖括号,而不是“include”iostream.hh“?它们的含义不同,都是由实现定义的。如果“
搜索失败,则实现将返回到
情况。在大多数实现中,“
搜索当前目录,
搜索系统头目录。检查C++规范部分16.2。