코딩 연습의 관점에서 열거 형보다 전역 상수가 선호되는 컨텍스트는 무엇입니까?전역 상수와 열거 형
예를 들어 전역 범위에서 다양한 타일 스프라이트를 표현할 방법이 필요하다고 가정 해 보겠습니다. 내가 할 수있는 ...
const int TILE_RED = 0;
const int TILE_GREEN = 1;
const int TILE_BLUE = 2;
const int TILE_CENTER = 3;
const int TILE_TOP = 4;
const int TILE_TOPRIGHT = 5;
const int TILE_RIGHT = 6;
const int TILE_BOTTOMRIGHT = 7;
const int TILE_BOTTOM = 8;
const int TILE_BOTTOMLEFT = 9;
const int TILE_LEFT = 10;
const int TILE_TOPLEFT = 11;
또는
enum Tile { TILE_RED, TILE_GREEN, TILE_BLUE, TILE_CENTER, TILE_TOP, TILE_TOPRIGHT
TILE_RIGHT, TILE_BOTTOMRIGHT, TILE_BOTTOM, TILE_BOTTOMLEFT, TILE_LEFT, TILE_TOPLEFT };
분명히 우리가 매크로에 대한 상수 및 열거 형이 선호하는,하지만 그것은 상수 및 열거 형에 내려 오는 경우는 어떻습니까? 어떤 상황에서 무엇을 선호합니까? 나는 일정한 객체가 당신의 프로그램을 느리게 만드는 작은 위험을 제기한다고 here을 읽었지 만 다른 사람들의 생각을 듣고 싶습니다.
이 예제는 관련 객체의 커다란 세트 인 열거 형 고양이 파자마 때문에 특히이 예제를 사용했습니다.
"명확하지 않은 enum이 일부 플랫폼 호환성 문제를 일으킬 수 있습니다."- 예를 참조하십시오. 또한 "유형을 지정하지 않음"으로 무엇을 의미합니까? 더 이상 전역 상수는 어떻게됩니까? –
"비 명시 적"은 열거 형이없는 것을 의미합니다. 플랫폼 호환성 문제는 리눅스 박스에서 발견되었고 이것을 수정했습니다. 좋은 컴파일러는 암시 적으로 const를 캐스팅하려고하면 그것을보고합니다. – aviraldg
언급 한 libc 플랫폼 호환성 수정에 대한 정보를 가르쳐 주시겠습니까? 나는 이것에 대해 배우고 싶다. –