728x90
반응형
SMALL
#include <stdio.h>
#define PRINT_EXPR(x) printf(#x " = %d\n", x)
#define NAME_CAT(x,y) (x ## y)
int main(void){
int a1, a2;
NAME_CAT(a, 1) = 10;
NAME_CAT(a, 2) = 20;
PRINT_EXPR(a1 + a2);
PRINT_EXPR(a2 - a1);
return 0;
}
### 코드의 주요 부분
- `#define PRINT_EXPR(x) printf(#x " = %d\n", x)`: 이 매크로는 인자로 받은 표현식 `x`를 문자열로 변환하고(`#x`), 그 표현식과 그 결과를 출력합니다.
- `#define NAME_CAT(x,y) (x ## y)`: 이 매크로는 두 인자 `x`와 `y`를 결합하여 하나의 토큰을 만듭니다. 예를 들어, `NAME_CAT(a, 1)`은 `a1`이 됩니다.
### 메인 함수의 작동
- `int a1, a2;`는 두 개의 정수 변수 `a1`과 `a2`를 선언합니다.
- `NAME_CAT(a, 1) = 10;`과 `NAME_CAT(a, 2) = 20;`은 `a1`과 `a2`에 각각 10과 20의 값을 할당합니다. 이는 `##` 연산자를 사용하여 변수 이름을 동적으로 생성합니다.
- `PRINT_EXPR(a1 + a2);`와 `PRINT_EXPR(a2 - a1);`는 각각 `a1 + a2`와 `a2 - a1` 표현식의 결과를 출력합니다. 첫 번째 PRINT_EXPR 매크로 호출은 "a1 + a2 = 30"을 출력하고, 두 번째 호출은 "a2 - a1 = 10"을 출력합니다.
### 출력 결과
```
a1 + a2 = 30
a2 - a1 = 10
```
728x90
반응형
LIST
'개념 > 혼자 공부하는 C언어' 카테고리의 다른 글
chapter 19) 사용자 정의 헤더 파일을 사용하는 프로그램 (0) | 2024.10.22 |
---|---|
chapter 19) 메크로 함수를 사용한 프로그램 (0) | 2024.10.21 |
chapter 19) 다양한 메크로명 사용 (0) | 2024.10.19 |
chapter 19) #pragma 지시자 (0) | 2024.10.18 |
chapter 19) #if, #ifdef, #else , #endif 를 사용한 조건부 컴파일 (2) | 2024.10.17 |