이 질문은 끝났으므로 열거 형을 사용하는 것이 좋습니다. 그러나, 나는 enums가 최종 코드에서 어떻게 컴파일되는지 궁금해 .- #define은 문자열 대체 일 뿐이지 만 열거 형은 컴파일 된 바이너리에 아무것도 추가하지 않습니까? 아니면 둘 다 그 단계에서 동급입니까? 펌웨어와 메모리를 작성하는 것이 매우 제한적이라면 #defines를 사용하는 데 아무리 작은 장점이 있겠습니까?임베디드 환경에서 #define vs enum (컴파일 방법)
감사합니다.
편집 : 아래 설명에 의해, 임베디드에 의해 요청 된대로, 나는 디지털 카메라를 의미합니다.
답변 해 주셔서 감사합니다. 나는 열거 형이다!
"임베디드"는 Nexus S에서부터 항공 전자 시스템에 이르는 모든 것을 의미 할 수 있습니다. 의미있는 대답을 원하면 버전을 좁혀 야합니다 (어떤 칩, 어떤 컴파일러, 어떤 버전?). 나는 응답자들에게'const '와 비슷한 대우를 받아야한다고 동의한다. –
@Matthew : C++에 대해 생각하고 있다고 생각합니다. C에서'# define'과'enum'은 상수 표현식을 만들 수 있지만'const' 변수는 결코 상수 표현식이 아니며, 접근하면 실제 코드 크기와 성능상의 불이익을 받게 될 것입니다. –
@R, 당신은 C99의 const 표현식이 아닌'const'에 대해 옳았습니다. (그리고 이것에 대해 읽어 볼 필요가 있습니다.) 그러나 간단한 경우 컴파일러는 여전히 메모리 할당을 피할 수 있습니다. 예를 들어,'const int a = 1;'을 헤더에 넣고 main에'int b = a;'를 넣으면 컴파일러는'a '에 메모리를 할당하지 않을만큼 똑똑 할 수 있습니다. –