Reference :
명품 C++ 프로그래밍 / 황기태 / 생능출판사
#include <iostream>와 전처리기
C/C++ 컴파일러는 컴파일 전에 우선 전처리기 (preprocessor)를 실행시켜 #include문을 모두 처리한다
헤더 파일의 확장
- 전처리기가 #include 문에 지정된 <헤더 파일>의 텍스트를 #include 문이 있던 그 자리에 삽입하는 것
- <헤더파일> 내에 또 다른 include 하는 문이 내포되어 있으면, 다시 그 자리에 '헤더 파일의 확장'이 일어나고, 모든 '헤더 파일의 확장'이 완료되면 전처리기는 종료
- <iostream> 파일은 <istream> 파일을 include
- <istream> 파일은 <ostream> 파일을 include
- <ostream> 파일은 <ios> 파일을 include 하므로
- include 한 모든 헤더 파일이 모두 SimpleC++.cpp 소스 파일 내에 확장되어 들어오게 된다.
<iostream> 헤더 파일은 어디에?
<iostream> 헤더 파일은 텍스트 파일로서 컴파일러가 설치된 폴더의 include 폴더에 존재
표준 C++ 헤더 파일은 확장자가 없다.
C언어에서 C 표준 라이브러리 헤더 파일의 확장자는 .h이다
C++에서도 C++ 표준 라이브러리 헤더 파일 확장자를 .h로 사용하여 오다가 2003년 C++ 표준부터 헤더 파일에 확장자를 붙이지 않기로 했다
#include <헤더 파일>과 #include "헤더 파일"의 차이
- #include <헤더파일>
: 컴파일러가 설치된 폴더에서 "헤더 파일"을 찾으라는 지시
ex) #include <iostream>
- #include "헤더파일"
: 개발자의 프로젝트 폴더나 개발자가 컴파일 옵션으로 지정한 include 폴더에서 '헤더 파일'을 찾도록 지시
헤더 파일에는 무엇이 들어 있는가?
흔한 오답
: strcpy() 함수를 사용하려면 <cstring>을 include 하는데, 그 이유는 strcpy() 함수의 코드가 들어 있기 때문이다
정답
- strcpy() 함수의 코드는 이미 컴파일된 기계어 형태로 C 라이브러리에 들어 있다
- 실행 중에 strcpy()가 호출되면 C 라이브러리의 코드를 호출하지, <cstring> 헤더 파일에 있는 무언가를 호출하는 것이 아니다.
- <cstring> 헤더 파일에는 strcpy() 함수의 선언만(원형) 들어 있으며, 컴파일할 때 strcpy() 함수의 호출이 정확한지 판단하는데 사용된다.
간단하게 보면 =>
<cstring>
strcpy(); //함수 원형만 존재
<stdio.h>
void strcpy() //내용물은 라이브러리에 있음
{
.....
}
cout과 cin은 어디에 선언되어 있는가?
- cout이나 cin은 모두 <iostream> 헤더 파일에 선언된 객체들
- cin은 istream 타입, cout은 ostream 타입의 객체로 선언된 것을 볼 수 있음
'C++ > [책 정리] 명품 C++ 프로그래밍' 카테고리의 다른 글
2. C++ 클래스 만들기 (0) | 2023.03.10 |
---|---|
1. 객체에 대한 이해 (0) | 2023.03.10 |
4. 키보드로 문자열 입력 (0) | 2023.03.10 |
3. 키 입력 받기 (0) | 2023.03.10 |
2. namespace와 std; (0) | 2023.03.10 |