본문 바로가기
언어/C, C++

[C++] #define

by minhyeok.lee 2024. 10. 24.
반응형

#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

댓글