¿Por qué NULL no está declarado?

Tengo un problema con esta estructura contructor cuando bash comstackr este código:

typedef struct Node { Node( int data ) // { this->data = data; previous = NULL; // Compiler indicates here next = NULL; } int data; Node* previous; Node* next; } NODE; 

cuando vengo este error ocurre:

 \linkedlist\linkedlist.h||In constructor `Node::Node(int)':| \linkedlist\linkedlist.h|9|error: `NULL' was not declared in this scope| ||=== Build finished: 1 errors, 0 warnings ===| 

El último problema fue la estructura, pero funcionó bien cuando estaba en mi main.cpp, esta vez está en un archivo de cabecera y me está dando este problema. Estoy usando Code :: Blocks para comstackr este código

NULL no es una constante incorporada en los lenguajes C o C ++. De hecho, en C ++ es más o menos obsoleto, simplemente use un literal literal 0 lugar, el comstackdor hará lo correcto dependiendo del contexto.

En C ++ más nuevo (C ++ 11 y superior), use nullptr (como se señala en un comentario, gracias).

De lo contrario, agregue

#include < stddef.h >

para obtener la definición NULL .

Utiliza NULL Simplemente está # definido como 0 de todos modos y es muy útil para distinguirlo semánticamente del entero 0.

Hay problemas con el uso de 0 (y por lo tanto NULO). Por ejemplo:

 void f(int); void f(void*); f(0); // Ambiguous. Calls f(int). 

La siguiente versión de C ++ (C ++ 0x) incluye nullptr para arreglar esto.

 f(nullptr); // Calls f(void*). 

NULL no es una parte nativa del lenguaje principal de C ++, pero es parte de la biblioteca estándar. Debe incluir uno de los archivos de encabezado estándar que incluyen su definición. #include o #include debería ser suficiente.

La definición de NULL está garantizada para estar disponible si incluye cstddef o stddef.h . No está garantizado, pero es muy probable que incluya su definición si incluye muchos otros encabezados estándar.

¿Está incluyendo “stdlib.h” o “cstdlib” en este archivo? NULL se define en stdlib.h / cstdlib

 #include  

o

 #include  // This is preferrable for c++ 

No use NULL , C ++ le permite usar 0 sin adornos en su lugar:

 previous = 0; next = 0; 

Y, como en C ++ 11, generalmente no debería usar NULL o 0 ya que le proporciona nullptr de tipo std::nullptr_t , que se adapta mejor a la tarea.