Partager via


Instruction switch

Transférez le contrôle vers un autre bloc d’instructions dans le corps du commutateur en fonction de la valeur d’un sélecteur.

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

Paramètres

Attribut

Paramètre facultatif qui contrôle la façon dont l’instruction est compilée. Lorsqu’aucun attribut n’est spécifié, le compilateur peut utiliser un commutateur matériel ou émettre une série d’instructions if .

Attribut Description
aplatir Compilez l’instruction sous la forme d’une série d’instructions if , chacune avec l’attribut aplatissement .
branche Compilez l’instruction sous la forme d’une série d’instructions if chacune avec l’attribut de branche . Note: Lorsque vous utilisez le modèle de nuanceur 2.x ou le modèle de nuanceur 3.0, chaque fois que vous utilisez la branchement dynamique, vous consommez des ressources. Par conséquent, si vous utilisez la branche dynamique de manière excessive lorsque vous ciblez ces profils, vous pouvez recevoir des erreurs de compilation.
cas de force Forcez une instruction switch dans le matériel. Note: Nécessite un matériel de niveau de fonctionnalité 10_0 ou version ultérieure.
appel Les corps des cas individuels dans le commutateur seront déplacés dans des sous-routines matérielles et le commutateur sera une série d’appels de sous-routine. Note: Nécessite un matériel de niveau de fonctionnalité 10_0 ou version ultérieure.

Sélecteur

Variable. Les instructions case à l’intérieur des crochets courbés case activée cette variable pour voir si switchValue correspond à leur CaseValue spécifique.

StatementBlock

Une ou plusieurs instructions.

Notes

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

Équivaut à :

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

Voici des exemples d’utilisation des attributs de contrôle de flux d’appels et de cas de force :

[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; 
}

Configuration requise

Condition requise Valeur
En-tête
Urlmon.h

Voir aussi

Contrôle de flux