Maison > développement back-end > C++ > Comment puis-je initialiser un membre Constexpr statique avec une fonction statique en C ?

Comment puis-je initialiser un membre Constexpr statique avec une fonction statique en C ?

Linda Hamilton
Libérer: 2024-12-07 21:42:14
original
311 Les gens l'ont consulté

How Can I Initialize a Static Constexpr Member with a Static Function in C  ?

Initialisation des membres statiques Constexpr à l'aide de fonctions statiques

Problème :

Vous souhaitez définir un membre constexpr avec une fonction statique, en l'initialisant avec une valeur calculée au moment de la compilation. Cependant, vous rencontrez des erreurs de compilation en essayant de le faire dans GCC.

Tentatives initiales :

Votre première tentative a placé le membre et la fonction constexpr statique dans la définition de la classe, déclenchant compiler les erreurs dans les anciennes versions de GCC. Votre deuxième tentative a déplacé ces éléments en dehors du corps de la classe, mais encore une fois, vous avez rencontré des problèmes dans les versions ultérieures.

Explication :

La norme C dicte des exigences spécifiques pour constexpr static membres de données. Ces membres doivent être initialisés à l’aide d’un initialiseur accolade ou égal, où chaque affectation est une expression constante. Lors de votre "deuxième tentative", vous n'avez pas respecté ce format.

Solution :

Malheureusement, l'initialisation d'un membre de données statique constexpr à l'aide d'une fonction statique n'est pas actuellement possible selon la norme C. En effet, les variables constexpr doivent être disponibles en tant que constantes de compilation à partir des corps des fonctions membres. Cependant, les fonctions statiques ne sont pas définies jusqu'à ce que la classe soit complète, ce qui rend impossible que l'expression soit une expression constante.

Problème observé dans GCC :

Votre première tentative aurait dû être valide mais peut avoir rencontré des bugs dans les versions antérieures de GCC. Si vous avez accès à une version plus récente de GCC, cela vaut la peine de réessayer le code initial.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal