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도 안잡힘.
=> 전처리 단계를 넘어가면 전처리로 선언해준 애들 컴파일러단계에서 못잡는다.
전치리 단계는 이미 넘어갔기 때문에.