J'ai une erreur lors de la compilation d'une bibliothèque utilisant Xcode:
'powf' is not a member of 'std'
3 Réponses :
Il est nommé std :: pow code> et surchargé pour
float code> et
double p>. p>.
Utilisez juste pow code> -
powf code> n'est pas standard. P>
jusqu'à C ++ 11, Depuis C ++ 11, Néanmoins, il existe des implémentations non conformes par exemple, GCC LIBSTDC ++. Plus de ressources dans cet extrait pris à partir d'une discussion dans Page de discussion CPPRARefolle : p>
Les réponses postées ci-dessus étaient correctes avant C ++ 11, puisque C ++ 98/03 n'avait pas encore référence à la bibliothèque C99. Selon le Standard actuel , Voir aussi Ceci, plus récent, donc Réponse: https://stackoverflow.com/a/54735351 --Cubbi ( Talk) 08:10, 19 février 2019 (PST) P>
blockQuote> powf code> était juste un Microsoft-ism . Il n'est pas apparu dans la norme ISO du tout, il est peu probable qu'il soit dans Xcode à moins d'adapter les pratiques bizarres de Microsoft, quelque chose que je penserais improbable. P>
pow code>, d'autre part, fait partie de la bibliothèque C ++ plus longtemps en vertu du fait que c'est dans les itérations antérieures de la bibliothèque C intégrée à C ++ Pre-11. Utilisez cela à la place. P>
POWF code> est-ce que em> apparaît dans la norme ISO et fait partie de l'espace de noms code> std code>. p>
POWF code> est déclaré dans Espace de noms
std code> quand est inclus (mentionné explicitement depuis C ++ 17, mentionné implicitement en C ++ 11/14, voir aussi N4659 , N4140 et N3337 ). Pour
std :: POWF CODE>, GCC LIBSTDC ++ n'est pas conforme tandis que CLANG LIBC ++ est . --Frudica (Talk) 03h49, 19 février 2019 (PST) P>
À partir de juin 2019, la norme C ++ 17 indique explicitement que code> déclare
powf code> (ainsi que
Sinf code>,
logf CODE>, etc.) Dans
Nomspace Std Code>, mais libstDC ++ est toujours buggy. Voir Cette question à propos de C ++ 17. A >
Je vote pour fermer cette question parce que c'est 10 ans et 4 versions C ++ ancien; Les réponses sont principalement de la forme "qui n'est pas standard C ++ 03"; Ce n'est tout simplement plus utile sur le site IMHO.