다음을 통해 공유


switch 문

선택기의 값에 따라 스위치 본문 내의 다른 문 블록으로 제어를 전송합니다.

[Attribute] switch( Selector ) { case 0 : { StatementBlock; } break; case 1 : { StatementBlock; } break; case n : { StatementBlock; } break; default : { StatementBlock; } break;

매개 변수

Attribute

문이 컴파일되는 방법을 제어하는 선택적 매개 변수입니다. 특성이 지정되지 않은 경우 컴파일러는 하드웨어 스위치를 사용하거나 일련의 if 문을 내보낼 수 있습니다.

attribute 설명
평면화(flatten) 문을 각각 flatten 특성이 있는 일련의 if 문으로 컴파일합니다.
분기 문을 각각 branch 특성이 있는 일련의 if 문으로 컴파일합니다. 참고:셰이더 모델 2.x 또는 셰이더 모델 3.0을 사용하는 경우 동적 분기를 사용할 때마다 리소스를 사용합니다. 따라서 이러한 프로필을 대상으로 할 때 동적 분기를 과도하게 사용하면 컴파일 오류가 발생할 수 있습니다.
forcecase 하드웨어에서 switch 문을 강제 실행합니다. 참고:기능 수준 10_0 이상 하드웨어가 필요합니다.
call 스위치의 개별 사례 본문은 하드웨어 서브루틴으로 이동되고 스위치는 일련의 서브루틴 호출이 됩니다. 참고:기능 수준 10_0 이상 하드웨어가 필요합니다.

Selector

변수입니다. 중괄호 안의 case 문은 각각 이 변수를 확인하여 SwitchValue가 특정 CaseValue와 일치하는지 확인합니다.

StatementBlock

하나 이상의 입니다.

설명

[branch] switch(a)
{
    case 0:
        return 0; 
    case 1:
        return 1; 
    case 2:
        return 3; 
    default:
        return 6; 
}

이는 다음과 같습니다.

[branch] if( a == 2 )
    return 3;
else if( a == 1 )
    return 1;
else if( a == 0 )
    return 0;
else
    return 6;

다음은 forcecase 및 호출 흐름 제어 특성의 사용 예입니다.

[forcecase] switch(a)
{
    case 0:
        return 0; 
    case 1:
        return 1; 
    case 2:
        return 3; 
    default:
        return 6; 
}

[call] switch(a)
{
    case 0:
        return 0; 
    case 1:
        return 1; 
    case 2:
        return 3; 
    default:
        return 6; 
}

요구 사항

요구 사항
헤더
Urlmon.h

추가 정보

흐름 제어