History

실수로 변수 이름을 @@@1,2,3으로 개발했을 때 본문

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