본문 바로가기
프로그래밍 언어/C++

[C/C++] #define과 const 차이

by 까망 하르방 2024. 11. 2.
반응형

#define

• 메모리에 올라가지 않는 장점

• 타입 지정 필요 없다

• 전처리기로 수행되기 때문에 디버깅 하기 쉽지 않다.

• 연산 우선순위에 따라 다르게 계산될 수 있기에 괄호 표시 주의

 

const
• 타입 지정 필요하다
• 컴파일러가 처리하기 때문에 디버깅 용이
• 일반 변수와 같이 메모리 할당됨
• 변수에 대입한 값이 이미 계산이 완료된 상태로 들어있는 상태

#define YEAR 2019
#define MONTH "Apr"
#define DAY 2

const int kYear = 2019;
const char[5] kMonth = "Apr";
const int kDay = 2;

 

 

연산시 주의사항

#include <iostream>

using namespace std;

#define TEST_VARIABLE_DEFINE 2+5
const int TEST_VARIABLE_CONST = 2+5;

int main(void)
{
    cout << TEST_VARIABLE_DEFINE * 6 << endl; // 32
    cout << TEST_VARIABLE_CONST * 6 << endl; // 35
    return 0;
}


#define ▶ 2 + 5 * 6 = 32

const ▶ (2 + 5) * 6= 42


 

Q) #define, const 어떤 것을 선택해야할까?

const는 변수는 변수형을 지정해주기에

개발자가 오류를 더 쉽게 감지할 수 있는 있다.

메모리를 극도로 조절해야 하는 환경이라면 define 선호하기도 한다.

반응형

'프로그래밍 언어 > C++' 카테고리의 다른 글

[C/C++] 패딩 비트 (Padding Bit)  (2) 2024.11.09
[C/C++] struct 차이 비교  (1) 2024.11.08
[C++] auto 키워드  (4) 2024.10.28
[C/C++] union 공용체  (2) 2024.10.27
[C/C++] Header Guard 활용  (2) 2024.07.24

댓글