Maison >développement back-end >C++ >Les fonctions constexpr peuvent-elles garantir le calcul de la longueur de la chaîne au moment de la compilation ?
Calcul de la longueur de chaîne au moment de la compilation : est-ce vraiment constexpr ?
Dans une tentative de calculer la longueur de la chaîne au moment de la compilation, une partie de le code utilise une fonction récursive (longueur) pour y parvenir. Cependant, des questions se posent concernant l'évaluation garantie de cette fonction au moment de la compilation.
La norme n'exige pas explicitement que les fonctions constexpr soient évaluées au moment de la compilation. Néanmoins, une note non normative dans le projet de norme C section 5.19 suggère que les expressions constantes peuvent subir une évaluation pendant la traduction.
Pour garantir une évaluation au moment de la compilation, on peut attribuer le résultat à une variable constexpr. Comme l'a déclaré Bjarne Stroustrup :
"En plus de pouvoir évaluer les expressions au moment de la compilation, nous voulons pouvoir exiger que les expressions soient évaluées au moment de la compilation ; constexpr devant une définition de variable fait cela ( et implique const)."
Par exemple :
<code class="cpp">constexpr int len1 = length("abcd");</code>
De plus, Stroustrup décrit des conditions spécifiques pour garantir l'évaluation à la compilation :
Par conséquent, même si la simple déclaration d'une fonction constexpr ne garantit pas l'évaluation au moment de la compilation, l'attribution de son résultat à une variable constexpr ou son utilisation dans un contexte approprié garantit cela.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!