Sean(slay) 2021. 2. 1. 01:58
반응형

매크로 연산자

 

 

매크로 함수 치환될 내용은 모두 문자열 그대로 치환되게 하지만

 

'#' 문자가 추가되면 해당 내용으로 모두 다 치환되는 것이 아니라 매크로용 연산자로 사용되게 된다.

 

 

'#' 문자열화 연산자이다. '#' 연산자 인자의 앞에 붙여 사용하는데

 

'#'이 붙은 인자는 인자 앞뒤에 자동으로 이중 따옴표가 붙어 문자열로 치환된다.

 

'##' 토큰 결합 연산자이다.

 

'##' 연산자 앞뒤에 입력된 인자를 입력된 그대로 붙여 코드로 치환해 주는 역할을 한다.

 

아래의 예제를 통해 매크로 연산자를 활용한 예시를 봐보자.

 

-

 

test39.c
0.00MB

 

 

 

-

 

위 예제의 소스 코드는 전처리기 과정을 거치게 되면 11행은 다음과 같이 치환되게 된다.

 

-

 

 

-

 

3행 매크로 문장에서 #x 매크로 인자 x에 해당하는 문자열을 모두

 

이중 따옴표로 묶어 문자열로 변환한다는 의미이기 때문이다.

 

그리고 13행 14행의 소스 코드는 다음과 같이 치환된다.

 

-

 

 

-

 

4행 매크로 문장에서 name##num 부분에는

 

13행에서 매크로 인자 "data, 1"을 전달하고

 

14행에서 매크로 인자 "data, 2"를 전달하여 각각 "data1" "data2"로 치환되기 때문이다.

반응형