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.