C,C++/개념 실습 프로그래밍
실수로 변수 이름을 @@@1,2,3으로 개발했을 때
luckybee
2022. 10. 22. 17:42
728x90
반응형
아래와 같이 프로그래밍을 하다가 귀찮아서 변수명 대충 짓고 나중에 헷갈려서 각 변수를 의미 있게 바꾸려고 하는데 코드가 복잡하게 꼬여있어서 감당이 안될 때 어떻게 해야 할까?
int data1,data2,data3;
int result1,result2,result3;
int num1,num2,num3;
변수명을 안 바꾸고 의미 있게 변수명을 바꾸려면 매크로 함수를 사용해야 한다.
매크로 함수는 #을 사용할 때는 문자열로 처리되지만 #을 2번 사용해서(##) 처리하면 단순 구분자로 사용된다. 이제 단순 구분자로 바뀌는 특성을 이용해 나름대로 변수를 치환해보자.
#define LO_STATE(data) data##1
위와 같이 ##을 두 번 적고 1을 적으면 data와 1을 구분해준다. main에서 변수명이 num으로 넘기면 num1으로 처리되는 것이다.
아래 코드를 보면서 사용법의 감을 익히도록 하자
#define LO_STATE(data) data##1
#define NOMAL_STATE(name) name##2
#define HI_STATE(name) name##3
#define ShowData(x) printf("%s=%d\n",#x,x) //저번 블로깅 복습
int main()
{
int data1, data2, data3;
int result1, result2, result3;
int num1, num2, num3;
LO_STATE(data)=7;
NOMAL_STATE(data) = -1;
HI_STATE(data) = 9;
LO_STATE(result) = 7;
NOMAL_STATE(result) = -1;
HI_STATE(result) = 9;
LO_STATE(num) = 7;
NOMAL_STATE(num) = -1;
HI_STATE(num) = 9;
ShowData(data1);
ShowData(data2);
ShowData(data3);
ShowData(result1);
ShowData(result2);
ShowData(result3);
ShowData(num1);
ShowData(num2);
ShowData(num3);
return 0;
}
728x90
반응형