[C] 매크로 함수

2025. 11. 20. 16:03·소프트웨어/C

매번 헷갈리는 매크로 함수를 정리해보았다.

 

매크로

#define 매크로명 치환될_부분

#define은 매크로명을 정의하는 전처리 지시자로, 위와 같이 사용한다.

매크로명을 정의하면 복잡한 상수나 문장을 의미 있는 단어로 쓸 수 있다.

#define PI 3.14159

예를 들어, 위와 같이 PI를 정의한다면, 3.14159 대신 PI를 사용하여 가독성을 높일 수 있다.

이와 같은 매크로 유형은 "매크로 상수" 라고 한다.

 

#define을 사용한 매크로 함수

내가 리눅스 커널을 분석하며 헷갈렸던 부분이다. 매크로 함수가 어마어마하게 많이 나온다.

매크로 함수는 인수에 따라 서로 다른 결괏값을 갖도록 치환된다. 따라서 비록 함수는 아니지만 인수를 주고 함수처럼 쓸 수 있다. 

#define 매크로_함수명(인수) 치환될_부분

예를 들어보자.

#define SUM(a,b) ((a)+(b))
#define MUL(x,y) ((x)*(y))

이렇게 반복되는 연산을 매크로 함수로 치환하여 가독성을 높일 수 있다.

물론, 컴파일 과정에서 연산이 대체되기 때문에 매크로 사용에 따른 계산 오버헤드는 발생하지 않는다.

 

 

명심하자. #define은 그저 텍스트를 치환해주는 단순한 녀석이란 것을!

'소프트웨어 > C' 카테고리의 다른 글

[C언어] C의 파일 입출력  (0) 2025.12.03
[C언어] const 키워드  (0) 2025.08.24
[C] void* 포인터  (0) 2025.08.04
[C] 헤더파일에 대하여  (0) 2025.08.02
[C] C언어의 extern 키워드  (0) 2025.07.30
'소프트웨어/C' 카테고리의 다른 글
  • [C언어] C의 파일 입출력
  • [C언어] const 키워드
  • [C] void* 포인터
  • [C] 헤더파일에 대하여
jh-rrr
jh-rrr
기술의 깊이에 집중하며 성장하길 지향합니다.
  • jh-rrr
    Embedded World
    jh-rrr
  • 전체
    오늘
    어제
    • 분류 전체보기 (64)
      • 소프트웨어 (17)
        • 프로그래밍 (2)
        • C (10)
        • Python (1)
        • 운영체제 (3)
        • 네트워크 (0)
      • Embedded Systems (16)
        • 리눅스 (10)
        • MCU 기본 (2)
        • 임베디드 레시피 (0)
      • Projects (1)
        • Cortex-M3 (1)
        • 재난 구조 로봇 (0)
      • AI (11)
        • Computer Vision (2)
        • Deep Learning (3)
        • cs224n (2)
        • cs231n (2)
      • 취업 준비 (0)
        • 프로젝트 & 자격증 (1)
      • 엔지니어링 뉴스 (3)
      • Paper Reviews (4)
      • Insights (8)
        • Seminar ! (2)
        • 서평 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    커널 이미지
    kernel image 란
    OS 이미지
    essential deep learning paper reading
    커널 이미지란
    stm32f 시리즈를 이용한 arm cortex-m3/m4 구조와 응용
    리눅스 오류
    리눅스
    conda: command not found
    일귀
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
jh-rrr
[C] 매크로 함수
상단으로

티스토리툴바