cout在哪里申报

Where is cout declared?

本文关键字:在哪里 cout      更新时间:2023-10-16

我的计算机科学教授希望我们找到cout的声明。我已经用g++和-E参数编译了一个简单的Helloworld程序。我的hello.cpp是这样的:

#include <iostream>
using namespace std;
int main(){
  string name="";
  cout << "Good morning! What's your name?";
  cin >> name;
  cout << "Hello " << name << ".n";
  return 0; 
}

我的编译命令:

g++ -E hello.cpp > hello.p

在hello.p中,我在VIM中进行了搜索,如下所示:

:/cout

我看到以下行:

extern ostream cout;

这是cout的声明吗?coutostream类的实例吗?

编辑:

wcout声明的目的是什么?如果我没有记错的话,字母"w"代表"宽",但我不知道这意味着什么。什么是wcoutwostream

是的,这确实是std::cout的声明,位于<iostream>标头中。

相关标准部件可在§27.4.1 [iostream.objects.overview]:中找到

标题<iostream>简介

#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;
}

p1报头<iostream>声明将对象与<cstdio>(27.9.2)中声明的函数所提供的标准C流相关联的对象,并且包括使用这些对象所需的所有报头。

这是cout的声明吗?cout是ostream类的一个实例吗?

是的,这是std::cout的声明,是的,它是std::ostream的实例。它被声明为extern,因此即使头包含在多个翻译单元中,对象也只创建一次。