History

#define으로 구성한 매크로 함수의 표현 본문

C,C++/개념 실습 프로그래밍

#define으로 구성한 매크로 함수의 표현

luckybee 2022. 10. 22. 17:16
728x90
반응형

일반적으로 우리가 int 변수를 통해 숫자를 printf로 출력할 때  아래와 같이 코드를 작성한다.

#include<stdio.h>

int main()
{
    int num = 10, data = 5;
    printf("num=%d\n",num);
    printf("data=%d\n",data);
    return 0;
}

그러나 극단적인 예시로 우리가 출력해야 할 int 변수가 10개, 20개까지 늘었다. 그러면 우리는 printf함수를 20번을 적어야 하고, printf함수 안에 어떤 변수가 출력되는지 알려주는 문자열도 각 변수에 맞게 바꿔줘야 한다. 얼마나 귀찮은 일인가.

 

이러한 불편함을 줄여줄 수 있는 방법은 #define(매크로 함수)을 이용하는 것이다.

아래 코드를 보자.

#include<stdio.h>
#define ShowVar(x) printf("%s=%d\n",#x,x)

int main()
{
    int num = 10, data = 5;
    ShowVar(num);
    ShowVar(data);
    return 0;
}

위와 같이 printf함수는 한번만 사용하고 매크로 함수를 이용해서 모든 값을 출력했다.

 

#define을 사용하여 매크로 함수를 만들 때 #을 이용하면 전달된 인자를 문자열로 출력이 가능하다.

 

 

보통 문자열을 대입할 때 아래 코드와 같이 작성한다.

char *p_char="asdqwe";

그리고 아래와 같이 ""를 연속으로 사용해도 위의 코드와 같은 결과가 대입된다. 그렇지만 권장하지는 않는다.

char *p_char="asd" "qwe";

 

이 규칙은 printf에도 적용된다.

int main()
{
	printf("HELLO\n" "World\n");
    return 0;
}

위 코드를 #define(매크로 함수)으로 응용해보면 아래와 같이 사용할 수 있다.

#define ShowVar(x) printf(#x "=%d\n",x)

 

728x90
반응형
Comments