Xavier Lamorlette
Les attributs (attributes) sont des annotations dans le code qui ne changent pas sa sémantique, qui peuvent être utilisées par le compilateur à des fins d'optimisation, et qui peuvent servir de documentation.
Sommaire :
deprecated
likely
/ unlikely
C++20nodiscard
C++17noreturn
deprecated
[[deprecated("bad performance)]] class A {};
likely
/ unlikely
C++20Indications pour le compilateur sur les chemins probables ou improbables :
if (condition) [[likely]] {
…
}
nodiscard
C++17Le compilateur émet un avertissement si on ignore le retour d'une telle fonction. On peut aussi noter ainsi un type.
[[nodiscard]] int f() {}
[[nodiscard]] class A {};
Avec C++20, on peut ajouter une explication :
[[nodiscard("explanation")]] int f() {}
noreturn
[[noreturn]] void f() {}
Les compilateurs peuvent proposer leurs propres attributs (puisque ça ne change pas la sémantique). Cf liste des attributs pour les fonctions pour GCC.
Force une fonction à être inline. Cela semble plutôt inutile si l'on compile avec optimisation.
__attribute__((always_inline)) void foo();
void foo () __attribute__((optimize(3)));
Une fonction pure
n'a aucun effet autre que sa valeur de retour, et celle-ci ne dépend que des arguments et des variables globales.
Such a function can be subject to common subexpression elimination and loop optimization just as an arithmetic operator would be.
Encore plus strict est l'attribut const
: une telle fonction ne lit pas de donnée autre que ses arguments (pas de variable globale, et pas d'indirection depuis les arguments).
The hot attribute on a function is used to inform the compiler that the function is a hot spot of the compiled program. The function is optimized more aggressively and on many target it is placed into special subsection of the text section so all hot functions appears close together improving locality.
À l'inverse, on peut indiquer cold
pour les fonctions peut susceptibles d'être exécutées.
La dernière mise à jour de cette page date d'août 2020.
Le contenu de ce site est, en tant qu'œuvre originale de l'esprit, protégé par le droit d'auteur.
Pour tout commentaire, vous pouvez m'écrire à xavier.lamorlette@gmail.com.