본문 바로가기
다양한 TIP

c++ define 으로 상수값 정의 vs const 정의

by 유기농프로그래밍 2023. 3. 7.
반응형

#define을 사용할 때의 문제점

C++에서 #define을 사용하여 상수 값을 정의하는 것은 일반적으로 허용됩니다. 하지만 C++11 이후부터는 const 키워드와 constexpr 키워드를 사용하여 값을 정의하는 것이 더욱 권장됩니다.


#define은 단순한 텍스트 치환으로 동작하기 때문에 여러 가지 문제점이 있습니다. 

예를 들어, 다음과 같은 문제점들이 있습니다.


타입 안정성(Type safety) 문제: #define은 타입을 명시하지 않기 때문에 컴파일러가 타입 체크를 하지 않습니다. 따라서, #define을 사용할 경우 타입이 맞지 않아서 예기치 못한 결과가 발생할 수 있습니다.


가독성 문제: #define을 사용하여 정의한 상수는 코드 내에서 일반적인 변수와 구분하기 어렵기 때문에 가독성이 저하될 수 있습니다.


디버깅 문제: #define을 사용하여 정의한 상수는 프로그램이 실행되기 전에 전처리기에 의해 처리되기 때문에 디버깅하기 어렵습니다.


따라서, C++11 이후부터는 const 키워드와 constexpr 키워드를 사용하여 값을 정의하는 것이 권장됩니다. const 키워드는 변수에 대한 상수를 정의할 때 사용되며, constexpr 키워드는 컴파일 타임 상수를 정의할 때 사용됩니다. 이러한 키워드를 사용하면 타입 안정성이 보장되고, 가독성과 디버깅이 용이해집니다.

 

사용방법

사용하는 방법을 예제로 보면 아래와 같습니다.

const

const 키워드

 

define

define 키워드

 

결론

결론적으로 define 보다는 const 나 constexpr 키워드를 권장합니다.

반응형

댓글