Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article fournit des informations sur la résolution de l’erreur C2653 ou C2039 qui se produit lorsque vous référencez une fonction à partir de la bibliothèque C++ STD.
Version du produit d’origine : Visual C++
Numéro de base de connaissances d’origine : 243444
Symptômes
Si vous tentez de référencer une fonction à partir de l’en-tête <cstdlib>
de la bibliothèque STD C++ à l’aide de l’espace de noms std
(par exemple), std::exit(0)
le compilateur émet un message d’erreur C2653 ou C2039 (selon que l’espace de noms std
est défini ou non au moment où l’erreur est émise).
Cause
<cstdlib>
ne définit pas l’espace de noms std
. Cela est contraire à la documentation Visual C++, qui indique :
Incluez l’en-tête <cstdlib>
standard pour inclure efficacement l’en-tête <stdlib.h>
standard dans l’espace std
de noms.
Résolution
Pour contourner le problème, placez l’espace #include <cstdlib>
de noms std
.
Plus d’informations
Si vous tentez de compiler les éléments suivants, le compilateur affiche l’erreur suivante :
erreur C2653 : 'std' : n’est pas un nom de classe ou d’espace de noms
// Compile Options: /GX
#include <cstdlib>
void main()
{
std::exit(0);
}
Toutefois, la tentative de compilation suivante provoque l’affichage de l’erreur suivante par le compilateur :
erreur C2039 : 'exit' : n’est pas membre de 'std'
// Compile Options: /GX
#include <vector>
#include <cstdlib>
void main()
{
std::exit(0);
}
Dans le premier cas, le C2653 s’affiche, car l’espace de noms std
n’a pas été défini. Dans le deuxième cas, le C2039 s’affiche, car l’espace de noms std
a été défini (dans l’en-tête <vector>
), mais la fonction exit
ne fait pas partie de cet espace de noms. Pour contourner le problème dans les deux cas, placez simplement l’espace #include <cstdlib>
de noms std
, comme suit :
// Compile Options: /GX
namespace std
{
#include <cstdlib>
};
void main()
{
std::exit(0);
}