# include <stdio.h> 는 뭐하는 아이일까?
c언어를 쓰면 항상 맨 위에
#include <stdio.h> 를 써줘야 한다.
왜일까?
그리고 이 아이는 도대체 뭐 하는 아이인걸까?
#include <stdio.h> 를
하나씩 쪼개서 그 이유를 알아보고자 한다.
#과 include 란?
# 은 hash mark라고 부른다.
include는 한글로 해석하면 '포함한다'는 뜻이다.
#include는 내가 어떤 걸 포함해서 쓰겠다고 선언하는 것을 뜻한다.
그런데 뭘 포함해서 어떻게 쓴다는 걸까?
바로 include 옆에 있는 stdio.h를 포함해서 쓰겠다는 거다.
stdio.h 란
stdio.h 는 standard input output 약자다.
stdio.h가 단순히 글자처럼 보일 수도 있지만 얘는 보통 글자가 아니다.
stdio.h는 바로 냉장고다!
집에서 요리를 한다고 했을 때 냉장고가 반드시 필요할 것이다.
냉장고에 대파랑, 쪽파랑, 가지랑, 두부랑, 된장을 넣어놓고
필요할 때 한 개씩 꺼내쓸 수 있으니 말이다.
c언어에서도 요리를 할 때,
즉 어떤 프로그램을 만들 때
printf란 함수도 필요하고,
scanf란 함수도 필요하고,
return이란 함수도 필요하다.
이게 무슨 소리인지는 지금 당장 알 필요 없다.
printf, scanf return같은 얘들은 비유하자면
대파, 쪽파, 가지 같은 것들이다.
내가 printf란 아이가 필요하다면 stdio.h란 냉장고에서
얘를 꺼내서 쓰는 것이다.
즉 여러 재료(함수)들을
아주 많이 보관해 놓고 있는 게 바로 stdio.h란 글자다.
대충 stdio.h가 어떤 건지 감이 잡혔다면
이젠 살짝 난이도를 높여서 설명을 이어가도록 해보겠다.
stdio.h에는 scanf, printf같은 얘들이 들어간다고 했다.
즉 여러가지 라이브러리가 stdio.h 안에 있다.
* 여기서 라이브러리란?
단축키라고 생각하면 쉽다. 우리는 한글에서 문서를 작성하고 나서 저장할 때
왼쪽 상단으로 마우스 커서를 올려서 '파일'을 누르고
그 다음에 마우스 커서를 아래로 내려서 '저장하기'를 누르지 않는다.
ctrl+s만 누르면 바로 저장된다.
우리가 ctrl+s만 눌러도 저장하기가 바로 되는 건
사람들이 미리 'ctrl+s만 누르면 파일 저장을 해!'라고 지정해 놨기 때문이다.
이렇게 단축키를 만들어 놓음으로서 번거로운 작업을 금방 끝낼 수 있다.
c언어에서도 마찬가지다.
가령 내가 c언어에서
"Hello World"라는 걸 출력하려고 한다고 해보자.
아래에서 보겠지만
"Hellow World"를 출력하기 위해선
printf("Hello World");를 써줘야 한다.
즉 앞에 printf라는 게 붙었다.
이게 바로 c언어의 단축키 같은 거다.
원래 "Hello Word"란 단어를 출력하기 위해선
길고, 길고, 길고 긴 문장을 작성한 다음
("Hello World")를 입력해야 Hello World가 출력됐다.
근데 그 길고, 길고, 길고 긴 문장을
printf라는 함수(단축키)로 만듦으로서
우리는 간단히 printf만 쓰고서도 Hello World를 출력할 수 있다.
c언어에는 printf같은 함수(단축키)가 여러가지 있다.
그런 여러가지 함수(단축키)들을 모아놓은 게 라이브러리다.
우리가 만약 #include <stdio.h>
를 첫 줄에 쓰지 않고 Hello World란 문자를 출력하고자 한다면
길고, 길고, 길고 긴 문장을 쓴 다음 Hellow World를 써야 했을 것이다.
이런 번거로움을 #include <stdio.h>가 해결해 주기 때문에
꼭 첫 줄엔 #include <stdio.h>를 써주도록 하자.
최종정리
- #include <stdio.h>는 이 stdio.h안에 있는 걸 포함해서 쓰겠다는 거다.
- 얘가 있어야 printf를 입력했을 때 "Hello World"가 출력될 수 있다.
#include <stdio.h>를 상단에 작성해 놓지 않고 printf를 사용하면 오류가 뜬다.
- 이건 마치 냉장고를 사놓지도 않았으면서
컴퓨터한테 냉장고에서 가지를 찾아와!라고 명령한 것과 같다.
'BOX-IT > C++' 카테고리의 다른 글
[C++] ‘strcpy’ was not declared in this scope 해결방법 (0) | 2022.04.11 |
---|---|
C언어에서 '100< X <200' 은 잘못된 표현이다. (0) | 2022.04.10 |
[C++] Scanf 함수의 정의와 사용 방법 (0) | 2022.03.27 |
C 포인터 개념을 소설로 쉽게 써서 정리한 글 (0) | 2022.03.22 |
[C++] 컴파일, 컴파일러, 바이트코드(바이너리코드)는 무슨 뜻일까? (0) | 2022.03.01 |