제가 확인해 본 내용이 아니라 정답인지는 모르겠는데요.
ENUM이란 개념이, 데이터를 저장하기 위한 영역을 확보하기 위한 것 - structure 나 melloc 같은 - 개념이 아니라,
상수값을 문자로 표현하기 위한 개념 아닌가요?
그러니, 아무리 많은 enum의 element를 선언한다고 하더라도 실제 저장 영역을 확보할 때에는 컴파일러가 그 선언값을 전부 상수값으로 치환한 다음에 저장하니까,
32bit 시스템에서 int상수값이 4 byte니까 그런 게 아닐까 합니다.
이 부분은 구현마다 틀린걸로 알고 있습니다.
일부 c 컴파일러에서는 이 부분이 알아서 최소크기로 할당되기도 합니다.
가령, ADS ARM cc에서는 enum이 1byte size를 가집니다.
항목 갯수가 많아지거나, 값을 지정한 경우에 2byte 또는 4byte가 되기도 하죠.
enum 형 변수는 int 타입
enum 형 변수는 int 타입으로 처리되는 것으로 알고 있습니다.
32-bit 운영체제라면 int 타입은 4바이트가 맞겠죠..
ENUM은 #define 개념으로 보는게 맞는 거 아닌가요?
제가 확인해 본 내용이 아니라 정답인지는 모르겠는데요.
ENUM이란 개념이, 데이터를 저장하기 위한 영역을 확보하기 위한 것 - structure 나 melloc 같은 - 개념이 아니라,
상수값을 문자로 표현하기 위한 개념 아닌가요?
그러니, 아무리 많은 enum의 element를 선언한다고 하더라도 실제 저장 영역을 확보할 때에는 컴파일러가 그 선언값을 전부 상수값으로 치환한 다음에 저장하니까,
32bit 시스템에서 int상수값이 4 byte니까 그런 게 아닐까 합니다.
행복은 희생없이는 얻을 수 없는 것인가?
시대는 불행없이는 넘을 수 없는 것인가?
enum은 int가 아니라,
제가 알기론 enum이 int size인 것은 아니지 싶습니다.
이 부분은 구현마다 틀린걸로 알고 있습니다.
일부 c 컴파일러에서는 이 부분이 알아서 최소크기로 할당되기도 합니다.
가령, ADS ARM cc에서는 enum이 1byte size를 가집니다.
항목 갯수가 많아지거나, 값을 지정한 경우에 2byte 또는 4byte가 되기도 하죠.
C/C++에서 enum은
C/C++에서
enum
은 컴파일 타임에 정수 상수로 인라이닝됩니다. 따라서int
와 같은 사이즈가 나오는 것이 맞습니다.—홍민희 (VLAAH, LangDev)
그냥 참고하세요~
요기
----------------------
Go to the U-City
----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------
댓글 달기