Les attributs ci-dessous sont standards et supportés par l'ensemble des compilateurs.
Il est possible d'indiquer au compilateur si une condition est généralement vraie ou fausse. Cela fonctionne sur if
et case
.
int s(int i); int iff(int i); int s(int i) { switch (i) { case 1: return 1; [[likely]] case 2 : return 2; [[unlikely]] default : return 3; } } int iff(int i) { int retval; if (i == 1) { retval = 1; } else if (i == 2) [[likely]] { retval = 2; } else [[unlikely]] { retval = 3; } return retval; } int main(int argc, char* /* argv */[]) { return s(argc) + iff(argc); }
Avec attributs | Sans attribut |
---|---|
|
|
On voit que le code est différent pour le switch
/case
mais pas pour le if
/then
/else
.