반응형
매크로 연산자
매크로 함수가 치환될 내용은 모두 문자열 그대로 치환되게 하지만
'#' 문자가 추가되면 해당 내용으로 모두 다 치환되는 것이 아니라 매크로용 연산자로 사용되게 된다.
'#'은 문자열화 연산자이다. '#' 연산자는 인자의 앞에 붙여 사용하는데
'#'이 붙은 인자는 인자 앞뒤에 자동으로 이중 따옴표가 붙어 문자열로 치환된다.
'##'은 토큰 결합 연산자이다.
'##' 연산자는 앞뒤에 입력된 인자를 입력된 그대로 붙여 코드로 치환해 주는 역할을 한다.
아래의 예제를 통해 매크로 연산자를 활용한 예시를 봐보자.
-
-
위 예제의 소스 코드는 전처리기 과정을 거치게 되면 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 |