Q1. invalid size for bit field 에러가 발생합니다. 어떤 문제인가요?
해당 에러는 비트필드(bit field)로 선언된 필드의 크기(bit 수)가 해당 타입의 실제 크기보다 큰 경우에 발생합니다.
예를 들어 아래와 같은 오류 메시지가 출력될 수 있습니다.
이 경우 _reserved1 필드가 uint32_t 타입임에도 불구하고, 분석 도구의 타입 사이즈 설정이 잘못되어 비트필드 크기가 타입 크기보다 크다고 판단될 때 오류가 발생합니다.
Q2. 왜 이런 에러가 발생하나요?
해당 사례에서는 STATIC 분석 설정 파일(.sconf) 에서 int 타입 크기를 잘못 설정했기 때문입니다.
실제
uint32_t는 4바이트(32bit) 타입이어야 하나.sconf파일에서int크기를 2바이트로 설정해둔 경우
→ 분석기가 비트필드를 처리하면서 크기 모순이 발생해 오류가 발생합니다.
예시:
Q3. 어떻게 해결하나요?
.sconf 파일에서 타입 크기를 실제 환경에 맞게 수정하면 문제를 해결할 수 있습니다.
✔ 올바른 설정 예시
이와 같이 int 타입을 4바이트로 수정하면 해당 에러는 해결됩니다.
Q4. 내가 사용한 구조체 또는 공용체에서 어떤 부분을 확인해야 하나요?
에러가 발생한 비트필드가 포함된 구조체/공용체 정의의 타입 크기를 반드시 확인해야 합니다.
예시 구조체:
위와 같은 타입 정의가 있는 경우 다음 항목을 점검해야 합니다.
? 점검 항목
.sconf파일에서 해당 정수 타입(uint32_t,int등)의 크기가 정확히 설정되어 있는지분석 도구에서 사용하는 기본 타입 크기 정의가 실제 컴파일 환경과 일치하는지
비트필드의 총합 비트 수가 타입 크기를 초과하지 않는지
Q5. 추가 지원이 필요한 경우 어떻게 하면 되나요?
.sconf 파일 설정과 비트필드 정의를 확인한 후에도 문제가 지속된다면,
에러 메시지
문제가 발생한 구조체/공용체 정의
사용 중인
.sconf파일의 타입 설정 내용
을 help@suresofttech.com 기술지원 메일로 보내주세요.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.