I get this message when compiling C++ on gcc 4.3
error: ‘NULL’ was not declared in this scope
It appears and disappears and I don't know why. Why?
NULL is not a keyword. It's an identifier defined in some standard headers. You can include
To have it in scope, including some other basics, like
GCC is taking steps towards C++11, which is probably why you now need to include cstddef in order to use the NULL constant. The preferred way in C++11 is to use the new nullptr keyword, which is implemented in GCC since version 4.6. nullptr is not implicitly convertible to integral types, so it can be used to disambiguate a call to a function which has been overloaded for both pointer and integral types:
void f(int x); void f(void * ptr); f(0); // Passes int 0. f(nullptr); // Passes void * 0.