반응형

매크로 연산자

 

 

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

 

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

 

 

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

 

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

 

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

 

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

 

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

 

-

 

test39.c
0.00MB

 

 

 

-

 

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

 

-

 

 

-

 

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

 

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

 

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

 

-

 

 

-

 

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

 

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

 

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

반응형

'시작하지 말았어야 했던 것 > C언어 기본 문법' 카테고리의 다른 글

21. 구조체 정의  (0) 2021.02.01
20. 조건부 컴파일  (0) 2021.02.01
18. 매크로 함수  (0) 2021.02.01
17. 매크로 정의  (0) 2021.02.01
16. 전처리기  (0) 2021.02.01

+ Recent posts