[C++] #define - 매크로PROGRAMMING/04. C++2024. 4. 18. 13:03
Table of Contents
반응형
#define
-매크로
-전처리기
-단순 치환
장점
1. 가독성
2. 유지보수
사용법
#define 매크로이름 치환할 값
#define NUMBERONE 1
⚠️주의점⚠️
단순 치환이기 때문에 세미콜론을 작성할 경우 세미콜론까지 치환해버린다
예제1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#define NUMBERONE 1
#define NUMBERTWO 2
#include <iostream>
using namespace std;
int main() {
int num1 = NUMBERONE;
int num2 = NUMBERTWO;
cout << num1 << endl;
cout << num2 << endl;
return 0;
}
|
cs |
실행 결과
예제2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define PI 3.14f // 매크로 변수
#define TRUE rand() % 2 // 절대! 사용해서 안되는 문법 (TRUE는 무조건 1이어야 하기 때문)
#define MUL(x, y) (x) * (y) // 매크로는 그대로 치환하기 때문에 괄호를 붙여서 순서를 정해주어야 원하는 결과를 얻을 수 있다!
int main()
{
srand(time(0)); // 랜덤 시드
float radian = PI * 2;
printf("radian = %f\n", radian);
int temp = 10;
int temp2 = temp > 5 ? TRUE : 0;
printf("temp2 = %d\n", temp2);
int value = MUL(2 + 3, 3 + 4);
printf("value = %d\n", value);
return 0;
}
|
cs |
✅ 코드 분석 ✅
➡️ 6 Line ⚠️ 사용해선 안되는 문법 ⚠️ rand() % 2 : 0 ~ 1 사이의 정수 난수를 발생시키기 때문에 TRUE에 랜덤으로 0, 1이 나오게 된다.
➡️ 18 Line TRUE는 항상 1이어야 하는데 6번 Line에 define으로 TRUE에 매크로 처리를 해놨기에 0이 나올 수도 있다.
➡️ 8 Line 만약 MUL(x, y) x * y 라고 괄호를 제거했다면 22 Line 결과값이 35가 아닌 15가 결과로 나오게 된다.
반응형
@HYUNJZZANG :: HyunZzang
HyunZzang의 프로그래밍 공간 / 함께 공부해요!!
도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다 :)