Development/C++

컴파일러에 따라 바뀌는 enum 의 크기 문제

후미카 2017. 2. 9. 18:58

C 에서 Enum 의 크기는 컴파일러에 따라 변할 수 있다.


Debug 빌드에서는 4바이트로 빌드가 되는데 Release 빌드에서는 1바이트로 빌드가 되는 현상이다.


해결 방법은 Enum 의 크기를 미리 조절 해 주는 것이다.


ex)

enum testEnum1
{
VAL_1 = 0,
VAL_2,
VAL_3
}

enum testEnum2
{
VAL_1 = 0,
VAL_2,
VAL_3,
EOE = 0xffffff;
}

testEnum1 의 경우 1바이트로 컴파일이 되는 경우가 발생하나 

testEnum2 의 경우 마지막에 사용하지 않는 값을 이용해서 4바이트로 크기를 변환 한 것이다.