2012-05-11 25 views
15

Así que estoy construyendo algunos códigos Arduino en eclipse, como se describe en Your Second Arduino Project, pero cada vez que uso una biblioteca Arduino, como Serial, Eclipse subraya mis nombres de funciones, alegando que no se pueden resolver. Sin embargo, el código realmente se compila, por lo que no sé por qué Eclipse cree que faltan las funciones. Si alguien tiene alguna idea sobre cómo resolver este problema, se lo agradecería. Gracias de antemano.Eclipse C/C++ ¿Muestra errores pero compila?

EDITAR: Debería haber sido más específico, Eclipse subraya los MÉTODOS dentro de las bibliotecas de Arduino. Entonces, si utilizo Serial.println("hello");, subraya println() y afirma que no se puede resolver. Luego se compila muy bien y el método funciona cuando se carga en la placa Arduino.

EDIT2: Encontré mi error, resulta que estaba tratando de usar algunas funciones de C++ en un archivo C, y eclipse no me gustó; Cambié el nombre a .cpp y todos los rojos desaparecieron;) ¡Gracias por tu ayuda!

+0

¿Sigue subrayando incluso después de compilar? – Kiril

+0

Hmm, bueno, eso es desafortunado! No estoy seguro de qué podría estar causando eso. – Kiril

+0

¿Tiene autobuild? –

Respuesta

5

Para empezar, ¿de qué color es el subrayado? Esto hace la diferencia, ya que el amarillo significa que es una advertencia, y el rojo significa que es un error (crítico, no se construirá en la mayoría de las circunstancias).

En segundo lugar, debe mirar la pestaña "Problemas" para ver si hay errores reales. Si no hay nada allí, entonces sí compiló correctamente.

Ahora, volviendo a la pregunta original. Dependiendo del tipo de proyecto que esté construyendo, este tipo de comportamiento no es poco común. Eclipse parece hacer un mal trabajo al indexar ciertos proyectos. Cuando ejecuta "make all" desde la línea de comandos (que es efectivamente lo que hace Eclipse durante la compilación) es probable que resuelva todo su código y lo construya perfectamente.

Sin embargo, Eclipse utiliza una herramienta diferente separada para indexar todo el código fuente y resolver las definiciones de variables/funciones y las declaraciones. Este es literalmente un caso en el que la mano izquierda no sabe lo que está haciendo la mano derecha.

+3

Todos los subrayados son rojos, y la pestaña de mis problemas dice que son todos "Errores semánticos". Tan divertido como es compilar con éxito un archivo que es completamente rojo, ¿hay alguna manera de ocultar al menos todas estas líneas rojas? : P – SuperTron

28

Eclipse puede o no estar tirando de las rutas para indexar desde su configuración de compilación, dependiendo de la configuración. Lo más probable es que no ... está construyendo correctamente porque la configuración de su construcción está bien, y probablemente pueda construir a mano.

El indexador CDT (que es el motor para decidir dónde van todos esos bonitos subrayados, así como la finalización de código, salto de declaración F3, etc.) no es lo suficientemente inteligente en muchos casos para analizar tus Makefiles y saber dónde buscar los encabezados y la fuente. Debe decirle a Eclipse esa información manualmente.

Ir a Propiedades del proyecto -> C/C++ General -> Rutas y símbolos.

La cantidad de trabajo que necesita realizar puede variar mucho, dependiendo de su entorno. Si esta biblioteca externa es la única cosa que le da dolores de cabeza, entonces es probable que sólo tiene que añadir los caminos para esa biblioteca y reindex:

Haga clic derecho en el proyecto y seleccione Índice -> Reconstruir

+0

@Me tomó 2 días resolver este problema. Gracias. Aunque la ruta ya está especificada, la agregué de nuevo manualmente y reconstruí el índice. Eso hizo el trabajo. Los errores como este son muy frustrantes, espero que esto se resuelve en el siguiente plugin avr eclipse. – tez

+1

Podría haberme vuelto loco resolviéndolo pero has hecho una solución de 2 clics –

+3

Índice -> Reconstrucción me ayuda;) – stviper

1

I habían incluir carpetas en

Propiedades del proyecto -> C/C++ general -> Caminos y símbolos -> incluye

Cuando quité esos, los subrayados rojos se fueron, es decir, la construcción y el IDE, donde en sincronía.

0

Tuve el mismo problema. Índice -> Reconstruir no ayudó. Cuando agregué la línea #include <avr/iom1280.h> en main.cpp e hice Índice -> Reconstruir subrayados desaparecieron. Luego borré la línea #include <avr/iom1280.h> y proyecto aún sin líneas entrantes.

Reemplace iom1280.h con el nombre de su controlador. Mira el "avr \ include \ avr \" carpeta los nombres disponibles

+1

No es una solución ideal. Hace esto durante la compilación y lo basa en la MCU que especifique para el compilador. – Larcho

1

Cuando la resolución de símbolos, CDT indexador parece considerar todos los archivos de cabecera con independencia de cuáles son realmente incluido en la unidad de compilación. Hay un informe de error correspondiente con Eclipse Bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=439553

0

Eclipse no funciona tan bien con C++ como lo hace con Java, pero debería advertirle sobre los problemas una vez que presiona "Reconstruir" en la barra de menú.

Intente eso y vea si resuelve su problema.

1

La siguiente solución funcionó para mí: Haga clic en su proyecto haciendo clic derecho. Luego: Propiedades -> C/C++ General -> Rutas y símbolos -> Símbolos -> GNU C++. Casi seguro que no hay símbolos en absoluto si tiene este problema. Añadir símbolo "__cplusplus" con el valor "201402L" Después de esto: Haga clic derecho sobre Proyecto -> Índice -> Reconstruir haya terminado.

Cuestiones relacionadas