한국어
C/C++

3.1.1 Literal value requires(Arithmetic type conversion)

*MISRA-C:2004 10.6에는 “unsigned형의 모든 상수에는 접미사‘U’를 사용하여야 한다.”라고 명시되어 있다.
MISRA-C:2004 10.6의 사용 방법은 아래 그림과 같다.

K-20140515-356734.png

 

아래 그림은 신호처리 모듈의 실험결과 10.6의 오류가난 부분이다.

K-20140515-356955.png

 

PacketDecoder함수에서 ReturnCmd=0;이라 선언 할때 ReturnCmd변수는 unsigned로 선언되어 있기에 ReturnCmd=0U;로 수정되어야 한다.
프로그램에서 수치 상수를 사용할 때 C언어의 컴파일러는 자동적으로 치환문의 왼쪽의 변수 타입에 따라 치환문의 오른쪽에 있는 타입을 변환한다.
만약 수치 상수에 대하여 잠정적으로 결정된 타입을 사용하기 원하지 않는다면 접미사를 사용하여 정확한 타입을 지정해주어야 한다[7].
만약 접미사를 사용한 정수타입 상수가 오버플로우 때문에 최대값을 초과하였을 경우 컴파일러는 이에 대해 경고를 준다.


그러나 접미사를 사용하지 않아 명확하게 설명되지 않은 정수형 상수는 정수타입의 가장 작은 값으로 나올 수 있는 가능성이 있다.
*감시 시스템의 신호 처리 모듈은 정확한 값을 전달하여 위험을미리 방지하는 것이 목적이므로 접미사를 사용하여 다른 값이 나올 가능성을 사전에 차단하여야 한다

 

정보과학회논문지: 컴퓨팅의 실제 및 레터 제19권 제3호(2013.3)
임베디드 S/W 개발 시프로그래밍 개선점 -MISRA-C를 중심으로(Programming Enhancements for Embedded Software Development- focus on MISRA-C)

 

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------

*MISRA: 영국 자동차 산업 신뢰성 협회(MISRA: Motor Industry Software Reliability Association)

 

*감시시스템: 여기서의 감시 시스템은 원자력 발전소에서 사용되는 것을 말한다. 원자로의 중대 사고를 방지 하기 위해 수소농도를 실시간 모니터링하는 목적으로 사용되며 감시 시스템의 소프트웨어 오류는 엄청난 피해를 유발할 수 있는 가능성이 있다. 따라서소프트웨어의 품질과 안전성이 필수적인 시스템이다. 이밖에 안전에 직결된 분야, 예를 들어 자동차, 로봇, 의료 등에도 관련이 있다.