2012-03-11 2 views
9

컴퓨터 과학 교수는 cout이라는 선언문을 찾기를 원합니다. g ++과 -E 매개 변수를 사용하여 간단한 Hello World 프로그램을 컴파일했습니다. 여기 내 아래 hello.c 보이는 무엇과 같은 :cout은 어디에 선언 되었습니까?

#include <iostream> 

using namespace std; 

int main(){ 

    string name=""; 

    cout << "Good morning! What's your name?"; 

    cin >> name; 

    cout << "Hello " << name << ".\n"; 

    return 0; 

} 

내 컴파일 명령을

:/cout 

I : hello.p, 난, VIM에서 검색을 실행과 같이

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

다음 줄을 참조하십시오.

extern ostream cout; 

그는 cout을 선언하고 coutostream 클래스의 인스턴스입니까?

편집은 다음 wcout 선언은 거기에 무엇

있어? 내가 정확히 기억한다면 "w"는 "wide"를 의미하지만, 나는 그 의미가 무엇인지 모른다. wcoutwostream은 무엇입니까?

+0

나는 IOStream과 링크 할 때 코드의 어딘가에서 실행 파일을 찾아 낼 수 있습니다. – Kaslai

+0

@Aslai - 코드에서 한 줄을 뽑았습니다. 그게 맞는지 알고 싶습니다. – Moshe

+0

이것을 시도하십시오 : http://www.cplusplus.com/ - 검색 창에'cout'을 입력하십시오. –

답변

8

그렇습니다. 실제로는 <iostream> 헤더 안에있는 std::cout이라는 선언입니다.

관련 표준 부품

§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>가 제공하는 표준 C 스트림과 물체를 연관 객체 선언 <cstdio> (27.9.2)에 선언 된 함수를 사용하고 이러한 객체를 사용하는 데 필요한 모든 헤더를 포함합니다. 에스.

+0

감사합니다. 제 편집 내용을 분명히하는 마음입니까? – Moshe

+0

@ Moshe :'wcout'은'wchar_t'에 특화된'basic_ostream'입니다. 이것은 Windows에서 UTF-16, Linux IIRC에서 UTF-8을 의미합니다. – Xeo

2

그게 cout의 선언이며, cout은 ostream 클래스의 인스턴스입니까?

예, 신고자는 std::cout이며 예는 std::ostream입니다. extern으로 선언되므로 머리글이 여러 번역 단위에 포함되어 있어도 한 번만 개체가 만들어집니다.

+1

'namespace std {...}'부분을 잊지 마십시오. ':: ostream :: cout'이 아닌'std :: ostream std :: cout'입니다. – moshbear

관련 문제