[C/C++] 0. ์คํํ์ผ์ด ๋ง๋ค์ด์ง๋ ๊ตฌ์กฐ(feat. ์ปดํ์ผ๋ฌ)
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ง๋ค์ด์ง๋ ๊ณผ์ ์ ๋ฐ๋ผ์ ํฌ๊ฒ
- ์ปดํ์ผ ์ธ์ด(Compile Laguage)
- ์ธํฐํ๋ฆฌํฐ ์ธ์ด(Interpreter Laguage)
๋ก ๋๋๋ค.
์ปดํ์ผ ์ธ์ด์ ๊ฒฝ์ฐ, ์์ค๋ฅผ ์์ฑํ๊ณ ์ปดํ์ผ ๊ณผ์ ์ ๊ฑฐ์ณ์ ์คํํ์ผ์ด ๋ง๋ค์ด์ง๋ ๊ตฌ์กฐ์ด๋ค.
์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ๊ฒฝ์ฐ ์ธํฐํ๋ฆฌํฐ๊ฐ ์์ค์ ๋ผ์ธ ๋จ์๋ก ํด์ํด์ ์คํํ๋ ๊ตฌ์กฐ์ด๋ค.
C/C++์ ์ปดํ์ผ ์ธ์ด์ ํด๋น๋๊ณ ,
์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ '๋น๋'๊ฐ ์ปดํ์ผ ๊ณผ์ ์ ํต์นญํ๋ ๋จ์ด์ด๋ค.
(์๋์ฐ์ ๊ฒฝ์ฐ Visual Studio ๋น๋, ๋ฆฌ๋ ์ค์ ๊ฒฝ์ฐ gcc/g++ or Make ๋ช ๋ น์ด)
์ฐธ๊ณ ๋ก, Visual Studio์ ๋ฒ์ ์ ๋ง๊ฒ ์ปดํ์ผ๋ฌ๋ ๊ฐ์ด ์ค์น๋๋ฉฐ, ๋น๋ ๋ฐ ๋๋ฒ๊ทธ๊น์ง ๊ฐ์ด ์งํ ํ ์ ์๋ค.
(VS๋ฒ์ ๊ณผ ์ปดํ์ผ๋ฌ ๋ฒ์ ์ด ๋ง์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธด๋ค..)
๊ทธ๋์ ์ปดํ์ผ์ด๋ ๊ฒฐ๊ตญ ๋ฌด์์ธ๊ฐ?
- ์ฌ๋์ด ์ดํดํ ์ ์๋ ์์ค ์ฝ๋๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ 2์ง์๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋ปํ๋ค.
- ์ปดํ์ผ์ ์ํํ๋ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ๋ฌ ๋ผ๊ณ ํ๋ค.
์ปดํ์ผ ๊ณผ์
1. ์์ค ์ปดํ์ผ(Source Compile)
2. ๋งํน(Linking)
์์ค ์ฝ๋๋ฅผ ๋ฒ์ญํ๋ ๊ณผ์ ์ ์์ค ์ปดํ์ผ์ด๋ผ๊ณ ํ๋ฉฐ c/cppํ์ผ์ ๊ธฐ์ค์ผ๋ก ๋ฒ์ญํ๋ค. ์ฌ๊ธฐ์ ๊ฐ๊ณต ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ, cpp์์ ํค๋ํ์ผ์ includeํ๋ฉด, ์ปดํ์ผ๋ฌ๋ include๋ ํค๋๋ฅผ ์ฐพ์์ ๋ฒ์ญํ๊ณ ์๋ ์์ค์ ์๋ถ๋ถ์ ๋ถ์ฌ๋ฃ๋๋ค.
๊ฐ๊ณต ๊ณผ์ ์ ๊ฑฐ์ณ ๋ฒ์ญ์ด ๋๋๋ฉด, ์ค๋ธ์ ํธ ํ์ผ(Object file)์ด ๊ฒฐ๊ณผ๋ฌผ๋ก ์์ฑ๋๋ค. ์ค๋ธ์ ํธ ํ์ผ์ cpp๋ง๋ค ์์ฑ ๋๋ค.
์ดํ cpp๋ง๋ค ์์ฑ๋ ์ค๋ธ์ ํธ ํ์ผ์ ๋ชจ์ ํ๋์ ์คํ ๊ฐ๋ฅํ ํ์ผ์ ๋ง๋๋ ๋ฐ, ์ด๋ฅผ ๋งํฌ(link) ํน์ ๋งํน(linking)์ด๋ผ๊ณ ํ๋ค.
๋งํฌ ๊ณผ์ ์ ๊ฑฐ์น ๊ฒฐ๊ณผ๋ฌผ๋ก๋ ์คํํ์ผ(exe)์ด ๋ง๋ค์ด์ง๋ค.
๊ทธ๋ฆฌ๊ณ ์คํํ์ผ์ ๊ธฐ๊ณ๊ฐ ๋ฒ์ญํ ์ ์๋ ์ซ์๋ก ๋์ด์๊ธฐ ๋๋ฌธ์, ์คํํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์์ค์ฝ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ ๊ฒ์ด๋ค.
์ปดํ์ผ ๊ณผ์ ์์ ์๊ธด ์๋ฌ๋ฅผ ์ปดํ์ผ ์๋ฌ(Compile Error)๋ผ๊ณ ํ๋ฉฐ, ๋งํฌ ๊ณผ์ ์์ ์๊ธด ์๋ฌ๋ฅผ ๋งํฌ ์๋ฌ(Link Error)๋ผ๊ณ ํ๋ค. ์ปดํ์ผ๊ณผ ๋งํฌ ๋ชจ๋ ์ฑ๊ณตํด์ผ ์คํํ์ผ์ด ๋ง๋ค์ด์ง๋ค.
๋ํ ์ปดํ์ผ๊ณผ ๋งํฌ ๊ณผ์ ์์ ์๊ธด ์ธ์ด๋ฅผ ์ปดํ์ผ ํ์ ์๋ฌ(Complie Time Error) ํน์ ์ ์ ์๋ฌ(Static Error)๋ผ๊ณ ํ๋ฉฐ, ํ๋ก๊ทธ๋จ์ด ์คํํ๋ฉด์ ์๊ธด ์๋ฌ๋ฅผ ๋ฐ ํ์ ์๋ฌ(Run Time Error) ํน์ ๋์ ์๋ฌ(Dynamic Error)๋ผ๊ณ ํ๋ค.
// ๋น๋๋ ์ปดํ์ผ๊ณผ ๋งํฌ๋ฅผ ํฉ์น ๋ง๋ก ์ฐ์ธ๋ค.