ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어, enum 타입의 크기는?
    2012. 12. 19. 2 comments

    enum 타입으로 정의된 리스트를 정리하고 있다가, 최대치가 궁금해서 간단한 확인을 해보았다. 변수들은 일반적으로 sizeof를 이용하여 크기를 알아 낼 수 있는데, sizeof(enum)이 안되기 때문에, struct로 enum 타입을 감싸고 sizeof로 크기를 확인해보았다. linux 64bit 그리고 gcc 컴파일러를 사용하였다.


    #include <stdio.h>
    
    enum enum_number
    {
        ONE,
        TWO,
        THREE
    };
    
    struct enum_struct
    {
        enum enum_number num;
    };
    
    int main(int argc, char* argv[])
    {
        printf("enum:%ld\n",sizeof(struct enum_struct));
        return 0;
    }
    



    enum:4


    4byte 크기면, enum을 아무리 정의해도 최대치를 넘는다거나 할순 없을 것이다. 컴파일러에 따라 다르겠지만,  ARM과 같은 임베디드 환경에서는 1byte일수 있다고도 한다. 1byte면 255개까지만 사용할 수 있으니 주의를 기울여야 한다. 


    반응형

    TAG

    댓글 2

    • iticworld 2013.01.08 13:53

      컴파일러가 컴파일 과정에서 enum 의 크기를 결정합니다. 기본적으로 32bit 이상을 넘어가면, 64bit로 잡기도 한답니다. 컴파일러 설정이나 혹은 컴파일러 마다 다르겠지만, 기본적인 개념상은 enum 의 max 값만큼 크기를 잡는다고 합니다.

      enum e
      {
      ONE = 0x100000000000L,
      }

Designed by Tistory.