#define์ ์ ์ฌ์ฉํ๋ ๊ฑธ๊น?
๋จ์ํ ์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด define์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น?
์ด๋ฅผ ์๊ธฐ ์ํด์ ์์ค ์ฝ๋์ ๋ณํ ๊ณผ์ ์ ์ ํ์๊ฐ ์๋ค.
โ
Build์ ์์๋ ์๋์ ๊ฐ๋ค.
exe ํ์ผ ์์ฑ : ์์ค์ฝ๋ -> ์ ์ฒ๋ฆฌ -> ์ปดํ์ผ -> ๋งํฌ -> ์คํ
mcu ํฅ์ฌ ํ์ผ ์์ฑ : ์์ค์ฝ๋ -> ์ ์ฒ๋ฆฌ -> ์ปดํ์ผ -> ์ด์
๋ธ๋ฆฌ์ด ๋ณํ -> ํฅ์ฌ ํ์ผ ์์ฑ -> MCU ๋ค์ด๋ก๋
โ
C์ธ์ด๋ฅผ ์ฒ์ ๊ณต๋ถํ ๋, #define์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์ ์ฒ๋ฆฌ ๊ณผ์ ์ ๊ฑฐ์น์ง ์๋๋ค๊ณ ์๊ฐํ ์ ์ด ์๋ค.
#์ผ๋ก ์์ํ๋ ๋ฌธ์ฅ์ ์ ๋ถ ์ ์ฒ๋ฆฌ๊ธฐ ์ง์์์์๋ #include๋ ์ ์ฒ๋ฆฌ๊ธฐ๋ผ๊ณ ์๊ฐํ์ง ์์๋ค. ํญ์ C์ธ์ด๋ฅผ ์ค์ตํ ๋,
์๋ฌด์ ์ผ๋ก #inlcude <stdio.h>๋ฅผ ์์ฑํ ํํด์ด๋ค.
โ
์ ์ฒ๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?
์ปดํ์ผ ์ ์ ์ฒ๋ฆฌ๋๋ ํ๋ ์์
์ด๊ณ ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ์ฅ์น๋ฅผ ์ ์ฒ๋ฆฌ๊ธฐ๋ผ๊ณ ํ๋ค.
์ ์ฒ๋ฆฌ๊ธฐ๋ ํค๋ ํ์ผ์ ๋ถ๋ฌ์ค๊ฑฐ๋, ์์ค ํ์ผ ๋ด๋ถ์ ํน์ ๋ฌธ์์ด์ ์์ ๋๋ ๋ฌธ์๋ก ์นํํ๊ฑฐ๋, ์กฐ๊ฑด์ ๋ฐ๋ผ์ ์ฝ๋์ ์ผ๋ถ๋ฅผ ์ปดํ์ผํ๊ฑฐ๋ ์ปดํ์ผํ์ง ๋ชปํ๊ฒ ํ๋ ์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
โ
๊ถ๊ธ์ฆ์ด ํ๋ ๋ฐ์ํ๋ค.
#define์ ์ ์ฌ์ฉํ๋๊ฐ? ๋จ์ํ ๋ณ์๋ ํจ์๋ฅผ ์ ์ธ ๋ฐ ํธ์ถํ๋ฉด ๋์ง ์๋๊ฐ? ์ผ๋ฐ ๋ณ์ ๋ฐ ํจ์์ ๋งคํฌ๋ก(#define)์ ์ฐจ์ด๋ ๋ฌด์์ธ๊ฐ?
์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ์ดํดํ ํ์๊ฐ ์๋ค.
โ
์ปดํ์ผ์ด๋ ๋ฌด์์ธ๊ฐ? ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ ๋ฒ์ญ๊ธฐ์ด๋ค. ์ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋๊ฐ? ์์ค ์ฝ๋๋ ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฌ์ด ๋ฌธ์ฅ์ด๋ฉฐ, ๊ธฐ๊ณ๋ ์ดํดํ ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ธฐ๊ณ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ์ฅ์ผ๋ก ๋ฒ์ญํด์ค์ผ ํ๋ค.
C์ธ์ด๊ฐ ์๊ธฐ๊ธฐ ์ด ์ , ๊ฐ๋ฐ์๋ค์ ๊ธฐ๊ณ(์ปดํจํฐ, CPU)๋ฅผ ์ง์ ์ ์ดํ๊ธฐ ์ํด ๊ธฐ๊ณ์ด(์ด์
๋ธ๋ฆฌ์ด)๋ฅผ ์ง์ ์์ฑํ์๋ค. ํ์ง๋ง CPU๋ ๋ค์ํ๊ณ , CPU์ ์ข
๋ฅ์ ๋ฐ๋ผ ์ด์
๋ธ๋ฆฌ์ด ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ๊ฐ๊ธฐ ๋ฌ๋๋ค๊ณ ํ๋ฉฐ, ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์๋ ์ฝ๋๊ฐ ๊ต์ฅํ ๊ธธ์ด์ก๋ค.
โ
์ด ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด, ๊ธฐ๊ณ์ด๋ฅผ ์ง์ ์ฌ๋์ด ์์ฑํ์ง ์์๋ ๋๋ ๋ฒ์ญ๊ธฐ๋ฅผ ๊ฐ๋ฐํ๋๋ฐ ๊ทธ๊ฒ์ด ์ปดํ์ผ๋ฌ์ด๋ค. ๊ฐ๋ฐ์๋ค์ ๋ ์ด์ ๊ธฐ๊ณ์ ์ข
๋ฅ๋ฅผ ๊ณ ๋ คํ์ง ์์๋ ๋๋ค.
C์ธ์ด๋ ์์ค์ฝ๋ ์ค๋ณต์ ์ค์ด๊ณ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ธฐ ์ํด์ ํจ์๋ฅผ ์ ๊ณตํ๋ค. ํ์ง๋ง ํจ์๋ ํธ์ถ๋ ๋ *์คํ ํ๋ ์์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ ค์ง๋ ๋จ์ ์ด ์๋ค. (ํจ์ ํธ์ถ ์, ์คํ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋งค๊ฐ ๋ณ์, ๋ฐํ ํฌ์ธํฐ ๊ฐ, ์ง์ญ ๋ณ์ ์์๋ก ์ ์ฅ๋๋ ๊ฐ์ ์คํ ํ๋ ์์ด๋ผ๊ณ ํ๋ค.)
โ
C์ธ์ด ์์ค ์ฝ๋๋ฅผ ์์ฑํ ๋๋ ๋งคํฌ๋ก๋ฅผ ์์ฑํ๋ฉด, ์ค์ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ๋ ๋๋ ์ง์ ์ฝ๋ฉํ ๊ฒ์ฒ๋ผ ๋ณํ(์นํ, ์ ์ฒ๋ฆฌ ๋จ๊ณ์์ ๋งคํฌ๋ก๊ฐ ์์ค์ฝ๋๋ก ๋ณํ)๋๋ค.
โ
์ฆ, ์ ์ฅ ๊ณต๊ฐ์ธ ์คํ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ด๊ณ ์คํ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง ๋งคํฌ๋ก๋ ์์ค์ฝ๋๋ก ๋ฐ๋ก ๋ณํ๋๋ฏ๋ก ์คํ ํ์ผ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉฐ, ์ฌ๊ทํธ์ถ์ ํ ์ ์๋ค๋ ๋จ์ ์ ๊ฐ์ง๋ฏ๋ก ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์์ฆ์ ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ต์ฅํ ๋๋ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๊ฑฑ์ ์ ํ์ง ์์ ๋๊ฐ ๋ง์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋๋์น ์์ ์๋ฒ ๋๋ ์์คํ
๊ณผ ๊ฐ์ ํ๊ฒฝ์์๋ ๋งคํฌ๋ก๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.C์ธ์ด๋ ์์ค์ฝ๋ ์ค๋ณต์ ์ค์ด๊ณ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ธฐ ์ํด์ ํจ์๋ฅผ ์ ๊ณตํ๋ค. ํ์ง๋ง ํจ์๋ ํธ์ถ๋ ๋ *์คํ ํ๋ ์์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ ค์ง๋ ๋จ์ ์ด ์๋ค. (ํจ์ ํธ์ถ ์, ์คํ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋งค๊ฐ ๋ณ์, ๋ฐํ ํฌ์ธํฐ ๊ฐ, ์ง์ญ ๋ณ์ ์์๋ก ์ ์ฅ๋๋ ๊ฐ์ ์คํ ํ๋ ์์ด๋ผ๊ณ ํ๋ค.)
โ
C์ธ์ด ์์ค ์ฝ๋๋ฅผ ์์ฑํ ๋๋ ๋งคํฌ๋ก๋ฅผ ์์ฑํ๋ฉด, ์ค์ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ๋ ๋๋ ์ง์ ์ฝ๋ฉํ ๊ฒ์ฒ๋ผ ๋ณํ(์นํ, ์ ์ฒ๋ฆฌ ๋จ๊ณ์์ ๋งคํฌ๋ก๊ฐ ์์ค์ฝ๋๋ก ๋ณํ)๋๋ค.
โ
์ฆ, ์ ์ฅ ๊ณต๊ฐ์ธ ์คํ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ด๊ณ ์คํ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด ๋งคํฌ๋ก๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง ๋งคํฌ๋ก๋ ์์ค์ฝ๋๋ก ๋ฐ๋ก ๋ณํ๋๋ฏ๋ก ์คํ ํ์ผ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉฐ, ์ฌ๊ทํธ์ถ์ ํ ์ ์๋ค๋ ๋จ์ ์ ๊ฐ์ง๋ฏ๋ก ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์์ฆ์ ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ต์ฅํ ๋๋ํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๊ฑฑ์ ์ ํ์ง ์์ ๋๊ฐ ๋ง์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋๋์น ์์ ์๋ฒ ๋๋ ์์คํ
๊ณผ ๊ฐ์ ํ๊ฒฝ์์๋ ๋งคํฌ๋ก๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
์ผ๋ฐ ํจ์์ ๋งคํฌ๋ก์ ๋์ ์ฐจ์ด
์๋ ๋งคํฌ๋ก ํจ์์ ์ผ๋ฐ ํจ์ ์์๋ฅผ ๋ณด๊ฒ ๋ค.
#include <stdio.h>
#define MUL(x, y) x*y
int mul(x, y)
{
return x*y;
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d", MUL(a+1, b+1));
printf("%d", mul(a+1, b+1));
}
// ๊ฒฐ๊ณผ๊ฐ
// a=3, b=4 ์
๋ ฅ
// 8
// 20
โ์ ๊ฒฐ๊ณผ๊ฐ์ด 8, 20์ผ๋ก ๋ค๋ฅธ ๊ฐ์ด ๋์ฌ๊น? ๋งคํฌ๋ก๋ ์ ์ฒ๋ฆฌ ๋จ๊ณ์์ ์์ค ์ฝ๋๋ก ๋ณ๊ฒฝ๋๋ค๊ณ ํ๋ค.
MUL(a+1, b+1)์ ์์ค ์ฝ๋๋ก ์นํ๋๋ฉด a+1*b+1 ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก 3+1*4+1๋ก ๊ณ์ฐ๋์ด 8์ด๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋ค. mul๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๊ธฐ ์ํด์ ,
#define MUL(x, y) ((x) * (y)) ๋ก ๋ณ๊ฒฝํ๋ฉด ๋๋ค. ์์ค์ฝ๋๋ก ์นํํ๊ฒ ๋๋ฉด, ((a+1)*(b+1))์ด๋ค.
'๐ท C์ธ์ด 30๊ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/C++ Tip] 6. UNION ๊ณต์ฉ์ฒด์ STRUCT ๊ตฌ์กฐ์ฒด๋ก ํจํท ๋ง๋ค๊ธฐ (2) | 2024.09.04 |
---|---|
[C/C++ Tip] 5. ๊ตฌ์กฐ์ฒด ํจ๋ฉ์ ํ์์ฑ (0) | 2024.09.04 |
[C/C++ Tip] 4. ๊ตฌ์กฐ์ฒด ํ์ฉ: ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ (2) | 2024.09.02 |
[C/C++ Tip] 3. ์ฝ๋ฉ ๊ท์น. ๋ณ์๋ช ์ ํ๊ธฐ (0) | 2024.09.01 |
[C/C++ Tip] 1. ๊ฐ๋ฐํ๊ธฐ ์ , typedef ๋ณ๋ช ๋ถ์ฌ. (0) | 2024.09.01 |