본문 바로가기
프로그래밍 언어/C

[C] 매크로(macro)

by nahkim 2023. 5. 18.

매크로(macro)

상수나 자주 사용하는 표현식과 같이 다른 이름으로 대체한 이름

 

ex) N을 10으로 대체

#define N 10

 

매크로(macro) 종류

  • 단순 매크로 (simple macro)
  • 매개변수 매크로 (parameterized macro)

 

단순 매크로(simple macro)

매개 변수가 없는 매크로를 단순 매크로라 한다.

 

#define

#define 식별자 대체목록	\	식별자가 대체목록을 의미하게됨	\

#define N 10

대체 목록

: 식별자, 키워드, 숫자 상수, 문자 상수, 문자열 리터럴, 연산자 등을 포함

 

 

장점

  • 프로그램의 가독성을 높혀줌
  • 프로그램의 수정성을 높혀줌
  • 일관성 없는 코드나 오타 방지

 

 

매개변수 매크로 (parameterized macro)

#define

#define 식별자(	x1	,	x2	,	...	,	xn)대체목록

#define ADD(a, b) ((a) + (b))

 

 ex) 

#include <stdio.h>
#define ADD(a, b) ((a) + (b))

int main(void)
{
    printf("%d", ADD(1, 2));	# 3
    return 0;
}

 

장점

  • 프로그램이 조금 더 빨라진다.
  • 매크로는 generic이다.

단점

  • 컴파일된 코드가 더 길어진다.
  • 입력변수의 형을 확인해주지 않는다.
  • 매크로를 가리키는 포인터를 가질 수 없다.
  • 매크로가 입력변수를 한번 이상 평가할 수 있다. -> 예상하지 못한 값이 할당될 수 있다.

'프로그래밍 언어 > C' 카테고리의 다른 글

[C] 컴파일 과정  (0) 2023.05.20
[C 언어] 전처리기  (0) 2023.05.18