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
반응형