열거형

CJB_ny·2022년 8월 2일
0

C++ 정리

목록 보기
24/95
post-thumbnail
const int a = 1;

enum test
{
	b,
    c,
};

int main () 
{}

이럴경우 const int a는 메메모리에 올라 갈 수도 있고

안 올라갈 수도있다.

컴파일러가 최적화 하느냐 마느냐이다.

그런데 enum은 컴파일을 하면 무조건 메모리에 안올라가고

그냥 b = 0, c = 1 로 데대체하여 사용하기 때문에

const int a이런식으로 한거보다 효율적이다.

즉, const int 는 메모리를 조금이라도 잡을 가능성 있지만

enum은 아예 없어서 더 좋다는 말이다.

#붙은거

#define TestNum 1

프로그램 실행단계

전처리 단계 -> 컴파일 -> 링크

순서인데

#define하면 전처리기로 데이터 처리 한것이다.

전처기 동작 ❗


#define TEST 1+2

int main()
{
	int result = TEST * 2
	cout << result << endl;
}

이렇게하면 결과가 6이 나와야 할거같은데 5가 나온다.

그냥 "바꿔 치기"만 해준 것이다.

즉, result = 1 + 2 * 2; 라서 5가 나오는 것이다.

이런 문제가 발생할 수 있기 때문에

define보다 enum사용 권장.

또 define인 breakPoint도 안잡힘.

=> 전처리 단계를 넘어가면 전처리로 선언해준 애들 컴파일러단계에서 못잡는다.

전치리 단계는 이미 넘어갔기 때문에.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글