๐ ํค๋๊ฐ๋
#ifndef, #define, #endif๋ ํค๋ ๊ฐ๋(header guard)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
C ์ธ์ด์์ ์ค๋ณต ํฌํจ ๋ฐฉ์ง๋ฅผ ์ํด ์ฌ์ฉํ๋ ๋งคํฌ๋ก์ด๋ค.
๊ฐ์ ํค๋ ํ์ผ์ด ์ฌ๋ฌ ๋ฒ ํฌํจ๋ ๋ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
ํค๋ ๊ฐ๋๊ฐ ์๋ ๊ฒฝ์ฐ
ft.h๋ผ๋ ํค๋ ํ์ผ์ด ์๊ณ , ๋ ๊ฐ์ C ํ์ผ์์ ์ด๋ฅผ ํฌํจํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
ft.h
void ft_putchar(char c);
a.c
#include "ft.h"
b.c
#include "ft.h"
๋ง์ฝ main.c์์ #include "a.c"์ #include "b.c"๋ฅผ ํ๋ค๋ฉด, ft.h๊ฐ ๋ ๋ฒ ํฌํจ๋๋ค.
C ์ปดํ์ผ๋ฌ๋ ๋์ผํ ํจ์ ์ ์ธ์ ๋ ๋ฒ ์ฝ์ด๋ค์ด๊ฒ ๋์ด์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.
#ifndef, #define, #endif๋ ์ด๋ฐ ์ค๋ณต ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํด์ค๋ค.
ํค๋ ๊ฐ๋์ ๊ตฌ์กฐ
#ifndef FT_H // FT_H๊ฐ ์ ์๋์ด ์์ง ์์ผ๋ฉด
# define FT_H // FT_H๋ฅผ ์ ์ํ๊ณ ์๋ ๋ด์ฉ์ ํฌํจ
void ft_putchar(char c);
void ft_swap(int *a, int *b);
// ... ๋๋จธ์ง ํจ์ ์ ์ธ
#endif // ์ฌ๊ธฐ์ ๋
#ifndef FT_H:FT_H๋ผ๋ ๋งคํฌ๋ก๊ฐ ์ ์๋์ด ์๋์ง ํ์ธํ๋ค.- ์ ์๋์ด ์์ง ์์ผ๋ฉด
#define FT_H๋ฅผ ์คํํ๊ณ ๊ทธ ์๋ ๋ด์ฉ์ ์ฝ์ด๋ค์ธ๋ค. - ์ ์๋์ด ์๋ค๋ฉด ์ค๋ณต ํฌํจ์ ๋ฐฉ์งํ๊ณ ๋์ด๊ฐ๋ค.
- ์ ์๋์ด ์์ง ์์ผ๋ฉด
#define FT_H:FT_H๋ผ๋ ์ด๋ฆ์ ์ ์ํ๋ค.- ์ด๋ ๊ฒ ํ๋ฉด ์ดํ ์ด ํ์ผ์ด ๋ค์ ํฌํจ๋๋๋ผ๋
FT_H๊ฐ ์ด๋ฏธ ์ ์๋์ด ์์ผ๋ ์ค๋ณต๋์ง ์๋๋ค.
- ์ด๋ ๊ฒ ํ๋ฉด ์ดํ ์ด ํ์ผ์ด ๋ค์ ํฌํจ๋๋๋ผ๋
#endif: ์กฐ๊ฑด๋ฌธ์ ๋๋ธ๋ค.
ํค๋ ๊ฐ๋ ์์ด #pragma once ์ฌ์ฉ
๋ ๊ฐ๋จํ๊ฒ #pragma once๋ก๋ ์ค๋ณต ํฌํจ์ ๋ฐฉ์งํ ์ ์๋ค. (์ค๋๋ ์ปดํ์ผ๋ฌ์์๋ ์ง์์ด ์ ๋ ์๋ ์๋ค.)
#pragma once
void ft_putchar(char c);
void ft_swap(int *a, int *b);
๐ #define์์ ๊ดํธ ์์ฑ
๊ดํธ ์์ด ์ผ์ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์
#define EVEN(n) n % 2 == 0 // ๊ดํธ ์์
์ด๋ ๊ฒ ์ ์ํ๊ณ ๋์ ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
if (EVEN(a + 1)) {
ft_putstr("Even\n");
}
์ด ์ฝ๋๋ EVEN(a + 1)์ ๋งคํฌ๋ก ํ์ฅํ ๋ ์ด๋ ๊ฒ ๋ณํ๋ค.
if (a + 1 % 2 == 0) {
ft_putstr("Even\n");
}
๐จ ๋ฌธ์ ์
- ์ฐ์ ์ฐ์ฐ์ ์ฐ์ ์์ ๋๋ฌธ์
1 % 2๊ฐ ๋จผ์ ๊ณ์ฐ๋ผ์a + 1 % 2๊ฐ ๋๋ค. - ์ฆ,
(a + 1) % 2๊ณผ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ์ด ๋์จ๋ค.
๊ดํธ๋ฅผ ์ผ์ ๋
#define EVEN(n) ((n) % 2 == 0)
์ด๋ ๊ฒ ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฐ์ ์์๊ฐ ๋ช ํํด์ง๋ค.
(a + 1) ์ ์ฒด๊ฐ % 2๋ก ๋๋ ์ง ํ == 0 ๋น๊ต๊ฐ ์ด๋ฃจ์ด์ง๋ค.
์ด๋ ๋ฏ, ๋งคํฌ๋ก๋ ํจ์์ฒ๋ผ ๋ณด์ด์ง๋ง ๋จ์ ์นํ์ด๋ค.
๊ทธ๋์ ์ฐ์ ์์ ํท๊ฐ๋ฆฌ๋ ์ค์๋ฅผ ๋ง๊ธฐ ์ํด ๋ชจ๋ ๋ณ์์ ํํ์์ ๊ดํธ๋ก ๊ฐ์ธ์ผํ๋ค.
'๐โโ๏ธ Activities > 42 Cursus' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Makefile] SRC / OBJ / NAME (0) | 2025.05.30 |
|---|---|
| [Makefile] % (0) | 2025.05.30 |
| [Makefile] make & make all ์ฐจ์ด (0) | 2025.05.30 |
| [Makefile] Makefile ๊ตฌ์กฐ์ rule (0) | 2025.05.29 |
| [GitHub] Git ์ ์ฅ์ ์์ฑ / ์๊ฒฉ ์ ์ฅ์ ์ฐ๊ฒฐ / ์๊ฒฉ ์ ์ฅ์ ์ฃผ์ ๋ณ๊ฒฝ / Git ํด์ (0) | 2025.05.29 |