๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž Preprocessor Directive

by ๐“ƒ๐’ถ๐“ƒ๐’ถ๏ฝก 2015. 3. 9.

#include

 

 

์ „์ฒ˜๋ฆฌ ์ง€์‹œ์ž #include๋ฅผ ํ†ตํ•˜์—ฌ ํ•ด๋‹น ํ—ค๋” ํŒŒ์ผ์˜ ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์™€ ํ˜„์žฌ ์†Œ์Šค์— ์‚ฝ์ž…ํ•˜๋„๋ก ์ง€์‹œํ•œ๋‹ค. ํ—ค๋” ํŒŒ์ผ์€ ๋ณดํ†ต ๋‹ค๋ฅธ ํŒŒ์ผ์— ๊ตฌํ˜„๋œ ํ•จ์ˆ˜๋“ค์˜ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ๋‹ด๊ณ  ์žˆ์–ด์„œ ๊ทธ ํ•จ์ˆ˜๋“ค์„ ์ฐธ์กฐํ•˜์—ฌ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํŒŒ์ผ๋Ÿฌ์— ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์šฉ๋„๋กœ ํ™œ์šฉ๋œ๋‹ค. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํฌ๋งท์ด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€๋ฅผ ์•Œ๋ ค์ค„ ๋ฟ์ด๊ณ  ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์‹ค์ œ ๊ตฌํ˜„ ์ฝ”๋“œ๋Š” ๋”ฐ๋กœ ์กด์žฌํ•œ๋‹ค.

 

stdlib.h : Stadard Library (ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

๋ฌธ์ž์—ด ๋ณ€ํ™˜, ์˜์‚ฌ ๋‚œ์ˆ˜ ์ƒ์„ฑ, ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋“ฑ์˜ ํ•จ์ˆ˜๋“ค์„ ํฌํ•จํ•œ๋‹ค.

 

stdio.h : Standard Input/Output library (ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

๋ชจ๋“  C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜(ํŒŒ์ผ ์กฐ์ž‘, ์ฝ˜์†” ์ž…์ถœ๋ ฅ) ๋ฐ ๋งคํฌ๋กœ ์ •์˜, ์ƒ์ˆ˜ ๋“ฑ์€ ํ—ค๋” ํŒŒ์ผ์— ์ •์˜๋˜์–ด ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ stdio.h ํ—ค๋” ํŒŒ์ผ์„ ์†Œ์Šค ์ฝ”๋“œ์— ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.

 

C์—์„œ๋Š” ํ—ค๋” ํŒŒ์ผ์ด <stdio.h>์™€ ๊ฐ™์ด .h ํ™•์žฅ์ž๊ฐ€ ๋ถ™์ง€๋งŒ C++์—์„œ๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ—ค๋”์— ํ•œํ•˜์—ฌ <iostream>๊ณผ ๊ฐ™์ด ํ™•์žฅ์ž๋ฅผ ์ƒ๋žตํ•œ๋‹ค. C์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ—ค๋” ํŒŒ์ผ์˜ ๋Œ€๋ถ€๋ถ„์€ C++์—์„œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ <stdio.h> โ†’ <csdio>์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํ—ค๋” ํŒŒ์ผ์„ bracket <> ๋˜๋Š” quotation marks " " ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ปดํŒŒ์ผํ• ๋•Œ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ๋กœ A(/usr/include/), B(์†Œ์ŠคํŒŒ์ผ ์œ„์น˜)๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, <>๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“์€ ์œ„์น˜ A์—์„œ ํ—ค๋”ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค. " "๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“์€ ์œ„์น˜ B์—์„œ ํ—ค๋”ํŒŒ์ผ์„ ์ฐพ๊ณ , ๋งŒ์•ฝ ์—†์œผ๋ฉด, A์—์„œ ๋‹ค์‹œ ์ฐพ๋Š”๋‹ค.

 

 

 

#define

 

 

์ง€์‹œ์ž ์ดํ›„์— ๋’ค๋”ฐ๋ฅด๋Š” ๋ชจ๋“  key ํ‚ค์›Œ๋“œ๋ฅผ value๋กœ ์น˜ํ™˜ํ•œ๋‹ค. ๋‹จ์ˆœํ•œ ์น˜ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— bracket ์‚ฌ์šฉ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. C์—์„œ๋Š” ์ฃผ๋กœ ๋งคํฌ๋กœ ์ƒ์ˆ˜ / ๋งคํฌ๋กœ ํ•จ์ˆ˜๋“ฑ์œผ๋กœ ์ด์šฉ๋˜๋‚˜ C++์—์„œ๋Š” ์ข€ ๋” ๊ฐœ์„ ๋œ ์ƒ์ˆ˜ ์ •์˜ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ  ๋งคํฌ๋กœ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถ€์ž‘์šฉ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

#ifdef / #ifndef / #endif

 

ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ #define ๋ฌธ์ด๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํ•ด๋‹น ์กฐ๊ฑด ๋ธ”๋ก์˜ ์ฝ”๋“œ๋ฅผ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”์‹œํ‚จ๋‹ค. ๋ณดํ†ต์€ ํ—ค๋” ํŒŒ์ผ ์ธํด๋ฃจ๋“œ ์‹œ ์ค‘๋ณต๋œ ์ธํด๋ฃจ๋“œ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ํ—ค๋” ํŒŒ์ผ์˜ ์‹œ์ž‘๊ณผ ๋์„ #ifndef โ€ฆ #endif ์ง€์‹œ์ž๋กœ ๋‘˜๋Ÿฌ์‹ธ๋ฉด ํŠน์ • ์†Œ์Šค ๋‚ด์—์„œ ๊ฐ™์€ ํ—ค๋”๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ธํด๋ฃจ๋“œ ํ•˜๋”๋ผ๋„ ์ตœ์ดˆ ํ•œ ๋ฒˆ๋งŒ ์ธํด๋ฃจ๋“œ๋œ๋‹ค.

 

 

 

#pragma

 

์–ธ์–ด ์ฐจ์›์—์„œ ํ‘œ์ค€ํ™”๋˜์ง€ ์•Š๊ณ  ํŠน์ • ์ข…๋ฅ˜์˜ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ๋งŒ ์ง€์›๋˜๋Š” ์ „์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.