[ํ—ค๋”ํŒŒ์ผ(.h)] ํ—ค๋”๊ฐ€๋“œ

2025. 5. 29. 05:47ยท๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus

๐Ÿ“Œ ํ—ค๋”๊ฐ€๋“œ

#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          // ์—ฌ๊ธฐ์„œ ๋
  1. #ifndef FT_H: FT_H๋ผ๋Š” ๋งคํฌ๋กœ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
    • ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด #define FT_H๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ์•„๋ž˜ ๋‚ด์šฉ์„ ์ฝ์–ด๋“ค์ธ๋‹ค.
    • ์ •์˜๋˜์–ด ์žˆ๋‹ค๋ฉด ์ค‘๋ณต ํฌํ•จ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋„˜์–ด๊ฐ„๋‹ค.
  2. #define FT_H: FT_H๋ผ๋Š” ์ด๋ฆ„์„ ์ •์˜ํ•œ๋‹ค.
    • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ดํ›„ ์ด ํŒŒ์ผ์ด ๋‹ค์‹œ ํฌํ•จ๋˜๋”๋ผ๋„ FT_H๊ฐ€ ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ์œผ๋‹ˆ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š”๋‹ค.
  3. #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
'๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Makefile] %
  • [Makefile] make & make all ์ฐจ์ด
  • [Makefile] Makefile ๊ตฌ์กฐ์™€ rule
  • [GitHub] Git ์ €์žฅ์†Œ ์ƒ์„ฑ / ์›๊ฒฉ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ / ์›๊ฒฉ ์ €์žฅ์†Œ ์ฃผ์†Œ ๋ณ€๊ฒฝ / Git ํ•ด์ œ
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (42)
        • C++ (28)
        • Java (14)
      • ๐Ÿ“ Study (17)
        • React (1)
        • Java (16)
      • ๐Ÿ’ป CS (11)
        • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ (2)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    BFS
    La Piscine
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    ๋ฐฑ์ค€
    CS
    unity
    knapsack
    dynamic programming
    C
    java
    CSS
    ๋งต
    ๊ตฌํ˜„
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    HTML
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    github
    swea
    .h
    ์ •๋ ฌ
    dfs
    ๋ฐฑํŠธ๋ž˜ํ‚น
    VR
    react
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    git
    42๊ฒฝ์‚ฐ
    makefile
    ํŠธ๋ฆฌ
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[ํ—ค๋”ํŒŒ์ผ(.h)] ํ—ค๋”๊ฐ€๋“œ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”