2011-09-15 21 views
24

Acabo de instalar EclipseCDT con MinGW. Todas las variables de entorno están configuradas, incluidas, etc. Intenté ejecutar un hello world y todo parece estar bien.Eclipse CDT "El símbolo NULL no se pudo resolver"

intenté cargar un proyecto C que tenía antes en mi equipo, parece que cargar todo está bien, pero me sale el siguiente error con el símbolo NULL:

Symbol 'NULL' could not be resolved 

Cualquier ideas? ¡Gracias!

Respuesta

31

NULL se define generalmente en stddef.h. Este archivo también se incluye generalmente con stdlib.h y stdio.h.

Y, siempre se puede hacer esto:

#ifndef NULL 
#define NULL ((void *) 0) 
#endif 
+0

En realidad, no creo que los encabezados estándar se incluyan entre sí; cada uno de los varios encabezados que definen 'NULL' lo hace de forma independiente. Y usted * podría * definirlo usted mismo, pero no hay una buena razón para hacerlo; solo incluye el encabezado. –

+1

@Keith - Tal vez en algunos sistemas, pero en Linux, stdlib.h incluye stddef.h. Y aquí hay un ejemplo en Google Code Search - [http://google.com/codesearch#XAzRy8oK4zA/libc/include/stdlib.h&q=stdlib.h&type=cs] –

+0

Ok, pero el efecto es como si no incluyera eso. Esto: '#include int main (void) { offsetof (struct {int i;}, i); return 0; } ' no se puede compilar. –

0

que estaba buscando respuestas aquí sobre esto porque descubrí que CDT veces falla la resolución de las cabeceras de la biblioteca estándar. Todavía no sé por qué y cómo reproducir el error. Simplemente reinicia CDT y todo está resuelto.

5

Tuve el mismo problema: mi archivo MAKE estaba funcionando bien pero recibía errores como el suyo desde la vista Eclipse CDT.

Cerré el proyecto actual, abrí un nuevo "proyecto Makefile con código existente", especificando la ubicación de origen de ubicación correcta de mi proyecto. Después de esto, verifiqué que: clic derecho proyecto/C++ general/Rutas y símbolos/Gnu C++/incluir directorios no está vacío e incluye las rutas correctas de mi proyecto.

Luego, reconstruí el índice (clic con el botón derecho/indexar/reconstruir).

Además, uso Eclipse CDT 7 y no Eclipse CDT 8 porque CDT8 a veces me da errores de compilación de la GUI que no pude resolver, aunque el archivo MAKE estaba bien.

+0

+1 estado buscando esta solución por algún tiempo. – chux

14

Como Bob mencionó, i corregir el error con sólo reconstruyó el índice

  1. derecho su proyecto
  2. elegir la opción "Índice"
  3. elegir "Reconstruir"
0

que estaba teniendo la mismo error y lo solucioné haciendo clic derecho en su proyecto, coloque el cursor sobre la pestaña de índice y haga clic en Reconstruir. Mis errores desaparecieron después de eso.

2
  • razón es:

NULL se define en stddef.h, pero stddef.h está en xxx/include/linux no xxx/include

-> incluso aunque haya añadido de MingW xxx/include, todavía no se puede encontrar NULL

  • la solución es:

añadir su ruta de MingW include/linux a su proyecto

  • árbitro

(1) ejemplo de trayectoria de mi xscale del compilador cruzado include/linux es: /opt/crosscompile/xscale/gcc-4.6.0-glibc-2.9/arm-xscale-linux-gnueabi/sysroot/usr/include/linux

added GNU C++ include linux path

(2) mi publicación: Ubuntu Eclipse: Symbol ‘NULL’ could not be resolved

1

Acabo de solucionar un error como este y pensé que, como nadie más había encontrado esta solución, la publicaría. Descubrí que stdlib había declarado NULL como ___need_NULL en mi compilador AVR GCC. Esto causó un error en Eclipse IDE. Sin embargo, el error fue causado por el análisis de Coden que no encontró la anomalía y por lo tanto no pudo encontrar el símbolo. Puede desactivar Coden en Preferencias en "General -> Inicio/Apagado" o cambiar su comportamiento en el análisis de C/C++ Code.

Esto puede explicar la naturaleza a veces al azar que otros están experimentando

1

creo que usted no ha añadido fichero de cabecera que define NULL. Agregue stdlib.h (instrucción #include). define macros NULL.

0

Simplemente agregue C:\MinWG\lib a las rutas de biblioteca de Eclipse.

0

También encuentro un problema similar que es "La magia del elfo de símbolos no se pudo resolver", y el encabezado de duende ya se ha incluido. Creo que el problema puede ser causado por el caché de la biblioteca, ya que reiniciar el software puede resolver el problema. Gracias por la ayuda de otros.

+0

¿Ha encontrado usted mismo un problema similar? – Alex

+0

sí, mi problema es que "symbol 'elf magic' no se pudo resolver" – user6528152

+0

Bienvenido a SO. Algunos consejos sobre cómo publicar respuestas. Publique una respuesta si: 1.encontraste un problema similar y pudiste resolverlo. 2. Cree que su respuesta puede contribuir (por ejemplo, su solución es diferente, o el problema es levemente diferente pero relacionado con el original). Incluye más detalles en tu respuesta. – Alex

Cuestiones relacionadas