주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

형변환 모드

변수의 데이터형을 형변환하는 방법

모델 구성 창: 코드 생성 / 코드 스타일

설명

코드 생성기에서 변수의 데이터형을 어떻게 형변환할지 지정합니다.

설정

공칭 (디폴트 값) | 표준 준수 | 명시적

디폴트 값: 공칭

공칭

C 컴파일러의 기본 데이터형 형변환을 사용하는 코드를 생성합니다. 이 설정은 명시적인 형변환을 요구하는 컴파일러에서 경고가 발생할 수 있는 불필요한 형 변환을 제거합니다.

표준 준수

MISRA™ 표준을 준수하는 데이터형 형변환이 포함된 코드를 생성합니다.

형변환 모드표준 준수로 설정하면, 피연산자가 부호 있는 유형일 때 생성된 코드에서 비트별 XOR 연산을 관계 연산으로 대체하여 MISRA C:12 규칙 10.1을 충족할 수 있습니다.

명시적

데이터형 값을 명시적으로 형변환하는 코드를 생성합니다.

예제

모두 확장

형변환 모드에 서로 다른 값을 할당했을 때 생성된 코드에서 나타나는 데이터형 변환을 비교합니다.

다음은 디폴트 형변환 모드 값인 공칭을 사용하여 생성된 코드입니다:

void EmbeddedCoderIntro_step(void)
  {
    boolean_T rtb_equal_to_count;
    rtDWork.X++;
    rtb_equal_to_count = (rtDWork.X != 16);	
    if (rtb_equal_to_count && (rtPrevZCSigState.Amplifier_Trig_ZCE != POS_ZCSIG))
     { rtY.Output = rtU.Input << 1;
     }

다음은 형변환 모드표준 준수로 설정하여 생성된 동일한 코드입니다:

void EmbeddedCoderIntro_step(void)
	{
	  boolean_T rtb_equal_to_count;
	  rtDWork.X = (uint8_T)((uint32_T)rtDWork.X + 1U);
	  rtb_equal_to_count = ((int32_T)rtDWork.X != 16);
	  if (rtb_equal_to_count && ((uint32_T)rtPrevZCSigState.Amplifier_Trig_ZCE !=
	       POS_ZCSIG)) {
	    rtY.Output = rtU.Input << 1U;
	  }
  

참고

모델 구성 파라미터 2의 거듭제곱이 곱해지는 연산을 부호 있는 비트 단위 시프트로 바꾸기가 선택되었으므로, 표현식 rtY.Output = rtU.Input << 1U는 MISRA C:12 규칙 10.1을 준수하지 않습니다. 자세한 내용은 Replace multiplications by powers of two with signed bitwise shifts 항목을 참조하십시오.

설정에 따라, 구성 파라미터 형변환 모드는 피연산자가 부호 있는 유형일 때 MISRA C:12 규칙 10.1을 충족하기 위해 생성된 코드에서 비트별 XOR 연산을 관계 연산으로 대체할 수 있습니다. 예를 들어, 형변환 모드를 각각 NominalStandard compliant로 설정하고 다음 모델로부터 코드를 생성해 보십시오.

Bitwise XOR block with two inputs and one output.

// Model step function (casting mode set to Nominal)
void step(void)
{rtY.Out3 = (boolean_T)((int32_T)(rtU.In1 != 0.0F) ^ (int32_T)(rtU.Inport1 !=
    0.0F));
}
// Model step function (Casting modes set to Standard Compliant)
void step(void)
{  rtY.Out3 = ((rtU.In1 != 0.0F) != (rtU.Inport1 != 0.0F));
}
여기서 파라미터 rtU.In1rtU.Inport1은 부호 있는 single형입니다. 이 피연산자들에 대해 비트별 XOR(^) 연산을 수행하면 MISRA C:12 규칙 10.1을 위반하게 됩니다. 이러한 위반을 방지하기 위해, 형변환 모드Standard compliant로 설정된 경우 코드 생성기는 생성된 코드에서 비트별 XOR(^) 연산을 부등호(!=)로 대체합니다.

다음은 형변환 모드명시적으로 설정하여 생성된 동일한 코드입니다:

void EmbeddedCoderIntro_step(void)
{
    boolean_T rtb_equal_to_count;
    rtDWork.X = (uint8_T)((uint32_T)(int32_T)rtDWork.X + 1U);
    rtb_equal_to_count = (boolean_T)((int32_T)rtDWork.X != 16);
    if (((int32_T)rtb_equal_to_count) && ((int32_T)
    rtPrevZCSigState.Amplifier_Trig_ZCE != (int32_T)POS_ZCSIG)) {
    rtY.Output = rtU.Input << 1;
}
  

권장 설정

응용 사례설정
디버그영향 없음
추적성영향 없음
효율성영향 없음
안전 예방 조치영향 없음

프로그래밍 방식 사용

파라미터: CastingMode
유형: 문자형 벡터
값: 'Nominal' | 'Standards' | 'Explicit'
디폴트 값: 'Nominal'

버전 내역

R2014b에 개발됨