Je reçois ce message lors de la compilation de C++ sur gcc 4.3
error: ‘NULL’ was not declared in this scope
Il apparaît et disparaît et je ne sais pas pourquoi. Pourquoi?
Merci.
NULL
n'est pas un mot clé. C'est un identifiant défini dans certains en-têtes standard. Vous pouvez inclure
#include <cstddef>
Pour l’avoir dans la portée, y compris quelques autres bases, comme std::size_t
.
GCC est en train de prendre des mesures en direction de C++ 11, ce qui explique probablement pourquoi vous devez maintenant inclure cstddef pour pouvoir utiliser la constanteNULLconstante. La méthode préférée dans C++ 11 consiste à utiliser le nouveau mot clé nullptr , implémenté dans GCC depuis la version 4.6. nullptr n'est pas implicitement convertible en types intégraux. Il peut donc être utilisé pour désambiguïser un appel à une fonction qui a été surchargée pour les types pointeur et type intégral:
void f(int x);
void f(void * ptr);
f(0); // Passes int 0.
f(nullptr); // Passes void * 0.
NULL
n'est pas un mot clé; c'est une substitution de macro pour 0, et vient en stddef.h
ou cstddef
, je crois. Vous n'avez pas #included
de fichier d'en-tête approprié, g ++ considère donc NULL
comme un nom de variable normal et vous ne l'avez pas déclaré.
Pour compléter les autres réponses: Si vous utilisez C++ 11, utilisez nullptr
, qui est un mot clé qui signifie un pointeur vide, pointant vers null. (au lieu de NULL
, qui n'est pas un type de pointeur)
NULL peut également être trouvé dans:
#include <string.h>
String.h extraira la valeur NULL ailleurs.
Vous pouvez déclarer la macro NULL. Ajoutez cela après votre # comprend:
#define NULL 0
ou
#ifndef NULL
#define NULL 0
#endif
Non ";" à la fin des instructions ...