[ Programing ]/C++

[C++] 매크로 - #, ## 연산자

Mister_Q 2024. 8. 22. 20:42

1. # 연산자
매크로에서 # 연산자는 문자열로 변환(치환) 시켜주는 연산자.


// !< EX)
#define MACRO_PRINT(s)     printf(#s)

void main()
{
     MACRO_PRINT(Test Value);
}

MACRO_PRINT 매크로에서 s앞에 # 빠지면 오류 발생. 
매크로변수 s는 'Test Value' 받는데 "" 없기에 하나의 '변수'로 인식해 치환.
만약 매크로의 #s 에서 #  뺀다면 "Test Value" 앞뒤로 따옴표 붙여 실행.

즉, #은 받아온 매크로 변수를 문자열로 바꿔주는 앞뒤에 따옴표를 붙이는 것과 같은 의미.





2. ## 연산자
##은 두 개 토큰을 이어 주거나 붙여준다.


#define MACRO_INT_nNumber(x)     int nNumber##x;

위와 같은 매크로가 있고, MACRO_INT(0) 이라는 매크로를 사용했다고 가정하면
x 변수를 nNumber##x 와 같이 nNumber하고 붙여준 int형 변수를 선언. 

즉, 위의 매크로와 같은 표현은 
int nNumber0;
nNumber와 0을 붙여서 하나의 변수로 만들어 진다.


// !< EX)
#define MACRO_INT_nNumber(x)     int nNumber##x;
#define MACRO_SUM(res, x)     ((res) += (nNumber##x))
#define MACRO_PRINT(x)     printf("nNumber%d = %d \n", x, nNumber##x)

void main()
{
    int res = 0;
    for(int32 nIndex = 0; nIndex < 5; ++nIndex)
    {
        MACRO_INT_nNumber(nIndex);
        MACRO_PRINT(nIndex);
        MACRO_SUM(res, nIndex);
    }
    
    printf("SUM(res) : %d \n", res);
}

>>
nNumber0 = 0 
nNumber1 = 1  
nNumber2 = 2  
nNumber3 = 3  
nNumber4 = 4  
nNumber5 = 5  
SUM(res) : 15 




출저 : https://norux.me/22

 

c언어 매크로 사용법 - #, ## 연산자

1. # 연산자 매크로에서 # 연산자는 문자열로 변환(치환) 시켜주는 연산자 입니다. 아주 단순한 예를 들어보았습니다. 아래의 예제를 한번 살펴보도록 하겠습니다. #include #define PRINT(s) printf(#s) int

norux.me


.