반응형
#define이란?
#define은 전처리기 지시어로, 컴파일러가 코드를 컴파일하기 전에 상수를 정의하거나 간단한 매크로를 사용할 수 있게 한다.
예시
#define US_DELAY 250
장점
1. 단순성
- 매우 간단하게 상수를 정의할 수 있으며, 복잡한 구문이 필요하지 않다.
2. 코드 크기 감소
- 컴파일러가 #define을 텍스트 치환으로 처리하기 때문에, 코드 크기를 줄이는 데 유리할 수 있다.
3. 어디서든 사용 가능
- 전처리기 단계에서 치환되므로, 어디서든 동일한 값을 사용할 수 있다.
단점
1. 타입 안전성 부족
- #define은 타입을 지정하지 않으므로, 잘못된 타입으로 사용될 가능성이 있다.
- 예를 들어, #define으로 정의된 상수는 타입이 없기 때문에, 타입 검사나 오류 메시지가 부족할 수 있다.
2. 디버깅 어려움
- 전처리기 단계에서 텍스트 치환이 이루어진다.
- 따라서 디버깅 과정에서 원래의 #define 값이 아닌 치환된 값만 확인할 수 있어 디버깅이 어려워질 수 있다.
3. 스코프 없음
- #define은 코드의 특정 범위에 제한되지 않다.
- 전역적으로 적용되기 때문에 예상치 못한 중복 또는 충돌이 발생할 수 있다.
반응형
'언어 > C, C++' 카테고리의 다른 글
[C++] #define, constexpr, PROGEM 비교 (0) | 2024.10.27 |
---|---|
[C++] PROGEM (0) | 2024.10.26 |
[C++] constexpr (0) | 2024.10.25 |
[C, C++] 모든 타입 정리 (0) | 2024.04.24 |
[C++] constexpr이란? const와 constexpr의 차이 ( const vs constexpr ) (0) | 2024.01.08 |
댓글