은 다른 컴파일러 (gcc, visual c 및 기타)에서 열거 형의 크기가 항상 동일합니다. 즉, 특정 enum의 sizeof()가 C/C++ 표준을 따르는 모든 컴파일러에서 동일한 값을 제공합니까?다른 컴파일러의 열거 형 크기 (바이트 단위)
답변
C 및 C 모두 제
++ 열거은 모든 값을 나타낼 수있는 크기는 갖고 정수 타입과 호환 될 것이다. 다른 컴파일러는 다른 알고리즘을 사용하여 유형을 선택할 수 있습니다 (ABI와 같은 다른 표준에 의해 지정되지 않은 경우).
반드시 그렇지는 않습니다 : C는 C++에서와 마찬가지로 컴파일러에서 열거 형 값 유형을 선택할 수 있도록합니다. [the C 표준] (http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf) 섹션 6.7.2.2/4를 참조하십시오. – pmg
또한 C++ 0x에서 새 * enum 클래스 *를 사용하여 열거 형 값을 백업하는 데 사용할 정수 유형을 지정할 수 있습니다. –
@pmg, 감사합니다. 내가 어디 있는지 알 수 없다. 나는 그것이 C90의 경우 이미 확인했다. – AProgrammer
"각 열거 형은 문자와 호환되어야한다, 서명 정수 유형 또는 부호없는 정수 타입 (C++ (11)는 새로운 구문을 사용하여 기본 유형을 지정할 수 있습니다). 유형의 선택은 입니다 구현 정의)하지만 열거 형의 모든 구성원에 대해 값을 나타낼 수 있어야합니다. "
"구현시 모든 열거 형 상수가 표시 될 때까지 어떤 정수 유형 의 선택을 지연시킬 수 있습니다."
ISO/IEC 9899 : 그래서 우리는 단지를 sizeof (열거)에 대한 상위 경계를
1999 (E) P.105. 대부분의 시스템에서 sizeof (enum) = 4 였지만 STM 컴파일러는 열거 형으로 작성된 값에 따라 sizeof (enum) = 1/2/4을 만들었습니다
편집 : 열거 형 값 중 하나를 다음과 같이 설정할 수 있습니다. 컴파일러가 정수를 enum 크기로 선택하도록하려면 int.
- 1. 다른 열거 형의 열거 형
- 2. DB의 열거 형 또는 열거 형 열거 형
- 3. 다른 열거 형을 참조하는 Java 열거 형
- 4. C18 컴파일러 typedef 열거 형 데이터 크기
- 5. 복합 형 열거 형
- 6. 열거 형
- 7. 다른 네임 스페이스의 열거 형 액세스
- 8. 데이터베이스에 대한 바이트 또는 텍스트 열거 형 유지
- 9. 클래스가 열거 형 (또는 열거 형 일 필요)
- 10. 열거 형 상자에서 메서드
- 11. 계층 간 열거 형
- 12. 열거 형 표현
- 13. 인터페이스의 열거 형 스텁?
- 14. 열거 형 구성
- 15. 열거 형 이해
- 16. 활동 열거 형
- 17. 전달 열거 형 인수
- 18. 열거 형 변환 캐스팅
- 19. 전역 상수와 열거 형
- 20. 열거 형 값의 수를 반환합니다. (Enum typedef의 크기)
- 21. 일반적인 비트 단위 열거 형 'IsOptionSet()'메서드를 만들 수 있습니까?
- 22. 열거 형 및 상속
- 23. 목록 열거 형 값 열거 형 PHP mysql
- 24. 열거 형 값 열거 형 정의를 얻는 방법?
- 25. JSP 내부의 열거 형
- 26. Java의 열거 형 이해
- 27. 상위의 Java 열거 형
- 28. Javascript의 자동 열거 형
- 29. 인터페이스 대 열거 형
- 30. 자바 : 익명 열거 형?
서명 여부가 다를 수 있습니다. –