tutorial tools plugin oxygen development descargar eclipse gcc eclipse-cdt

tools - Eclipse CDT muestra errores semánticos, pero la compilación está bien



netbeans c++ (19)

He instalado Eclipse Indigo para desarrolladores C / C ++ Linux en Ubuntu 10.04 x86.

Cuando uso macro predefinida común __BASE_FILE__ Eclipse dice que Symbol ''__BASE_FILE__'' could not be resolved , pero la compilación está bien. Tengo que usarlo tan a menudo en mi código y Eclipse llena mi pantalla con líneas rojas e iconos de error :)

¿Cómo puedo arreglar esto?


Actualizado: debe agregar rutas adecuadas a Proyecto-> Propo- nercias-> C / C ++ General-> Rutas y Símbolos. Si no ayuda, puede configurar Eclipse Code Analyzer (que genera los ''errores'') en Proyecto-> Propiedades-> C / C ++ General-> Análisis de código. En la descripción del error con la que tiene un problema, intente Personalizar seleccionados-> Ámbito-> Patrones de exclusión.


Creo que tiene algo que ver con el espacio de trabajo / .metadata. Tuve el problema de errores semánticos informados, pero Hello World compila y ejecuta. Eliminé el proyecto, creé otro, el mismo informe de error. CDT reinstalado, lo mismo. Se eliminó el espacio de trabajo, se apagó Eclipse, se reinició, se creó un nuevo mundo de saludo, lo mismo. Se eliminó el espacio de trabajo nuevamente, se apagó Eclipse nuevamente, esta vez se dio cuenta de que Eclipse había recreado la carpeta de espacio de trabajo durante el apagado cuando no pudo encontrarla. Eliminado el espacio de trabajo con Eclipse apagado. Reinició Eclipse, creó el proyecto HW, los errores se muestran durante aproximadamente un segundo y luego desaparecen. Proyecto eliminado, creado otro, los errores se muestran por un segundo, luego poof. Si realmente tenía proyectos en su área de trabajo (la mía era una instalación limpia), apuesto a que podría simplemente eliminar la carpeta .metadata dentro del espacio de trabajo, y la arreglaría.


El problema ocurre de esta manera: inserto un nuevo nombre de variable en el código en algún lugar, por ejemplo, "nuevo" en este ejemplo:

int a; foo() { a=17; newone=23; }

El archivo se guarda (por lo que el indexador se reindexa). Luego agregué la definición:

int a, newone; foo1() { newone=0; } foo() { a=17; newone=23; }

El indexador seguirá mostrando el error en la línea "newone = 23;" pero no en las otras líneas de código que contienen "newone".

Solución: primero defina sus variables, luego úselas.

METRO.


Eliminando la carpeta .metadata, y luego Importar proyecto.

¡De esta manera está bien!


En el pasado, yo definiría el símbolo de ANDROID en: Proyecto -> Propiedades -> C / C ++ General -> Trayectorias y símbolos -> pestaña de #Símbolos Sin embargo, la última versión de Eclipse ya no tiene un # Símbolos, ni en ningún otro lado . Parece que ya no hay forma de definir símbolos en Eclipse. Eclipse tiene tantos errores y problemas. Finalmente me di por vencido y cambié al uso de Gedit y la terminal para compilar.


Este es un problema de indexación de archivos.

Solución: haga clic con el botón derecho en el proyecto, Índice -> Actualizar todos los archivos.

(Se aplica a Eclipse CDT.Oxygen)


IMO la solución correcta es definir el símbolo en Proyecto -> Propiedades -> C / C ++ General -> Trayectorias y Símbolos -> pestaña Símbolos . Como puede suponer que el símbolo siempre lo proporcionará el compilador, simplemente dígale a Eclipse que lo considere definido.

Hace poco tuve el mismo problema, donde Eclipse se quejó de una macro indefinida, que siempre suministro usando la opción de compilación -D<MACRO_NAME> .


La solución más simple es reiniciar el indexador:

Ventana / Preferencias / C / C ++ / Indexador.
desmarque "Habilitar indexador" - >> Aceptar
reconstruir todo, puede mostrar muchos errores
marca "Habilitar indexador" - >> Aceptar
reconstruir todo

Este error puede producirse mediante el cierre forzado de eclipse por fallo de alimentación.


Necesitas reconstruir el índice de tu proyecto.

Haga clic derecho en el proyecto, luego Index-> ​​Rebuild.


No estoy seguro de si esto funciona para el problema de PO, pero tuve errores semánticos en eclipse Luna y pude resolverlos siguiendo las instrucciones en este hilo: Eclipse muestra inclusión no resuelta pero compila

El compilador encuentra el encabezado, pero Eclipse no.

Podría ayudar a Eclipse y establecer la ruta a los archivos de encabezado en:

Proyecto -> Propiedades -> C / C ++ Build -> Configuración -> Compilador -> Incluye

En mi situación, eclipse había determinado uno de mis directorios de inclusión, pero no determinó que hubiera directorios subincluidos dentro de él.


No estoy seguro si esto resuelve su problema específico, pero también tuve errores semánticos. Simplemente salieron de la nada después de tener un proyecto en funcionamiento.

De todos modos, lo arreglé con una sola opción en la configuración del espacio de trabajo configurando: "Configuración de compilación para indizador: Usar configuración de compilación activa"

La otra opción era "Usar la configuración de compilación especificada en la configuración del indexador del proyecto" y esta es la que no estaba funcionando. Creo que puede haber sido dañado después de un bloqueo de eclipse.


Personalmente estoy de acuerdo con la respuesta de compostus.

Es bueno resolver el problema real que tiene el analizador de código de eclipse.

Pero cuando pruebo estos pasos: defina el símbolo en Proyecto -> Propiedades -> C / C ++ General -> Rutas y Símbolos

No encuentro la pestaña del símbolo ni ningún lugar para agregar un símbolo. lo que quiero hacer es poner eclips macros como -DRODROID o #definir ANDROID 1 para que el analizador de código pueda encontrar esta definición.

Estoy bajo el león de montaña Mac OSX.


Si está en Ubuntu, vaya a Ventana> Preferencias> En el cuadro Buscar, escriba "Indizador"> Seleccionar indizador en la columna izquierda. En el encabezado "Opciones de indexador", marque las siguientes opciones (excepto las que implican omisión de archivos):

  • Archivos fuente de archivos de índice no incluidos en el proyecto
  • Índice encabezados no utilizados Indice todas las variantes de encabezado
  • Los archivos de origen y encabezado de índice se abren en el editor
  • Permitir resolución heurística de incluye

En el encabezado "Estrategia de indexación", marque ambas opciones, que son:

  • Actualiza automáticamente el índice
  • Actualizar el índice inmediatamente después de cada archivo guardado

En el encabezado "Configuración de compilación para el indexador", seleccione la siguiente opción:

  • Configuración de compilación activa de usuario

Tengo el mismo problema. El compilador preprocesa bien, pero el analizador estático no. En mi archivo fuente:

#define PLATFORM_INC_FILES #include <platform.h> int coflags=O_BINARY; // Undefined symbol

En platform.h (un encabezado dependiente del sistema operativo para ayudar a crear código portátil):

#ifdef PLATFORM_INC_FILES #include <stdio.h> ...

Parece que el analizador estático no tiene en cuenta las sentencias .c #define cuando el preprocesamiento incluye encabezados. Al definirlo en el diálogo de símbolos, los errores desaparecen, pero esa es una definición de símbolo de alcance del proyecto, lo que hace que cada fuente incluya todos los encabezados de sistema en mi caso.

Espero que se solucione pronto...

Usando Eclipse Mars y MinGW en MSIS2.


Tuve un problema similar, pero mi compilación estaba bien, pero Eclipse mostró errores en las líneas que usaban un #define de otro archivo de inclusión. Lo arreglé marcando "Indexar todas las variantes de encabezado". Creo que el classis #ifndef FILENAME en el archivo include se procesó varias veces en Indexer y, por lo tanto, la segunda vez que se definió FILENAME, por lo que todas las #defines en el archivo .h no fueron "vistas" por el preprocesador. Ir a la ventana | Preferencias | C / C ++ | Indexador


agregando como otra respuesta, con suerte esto ayudará a alguien.

Tengo un ~ espacio de trabajo simple (1 objeto compartido c ++ (la versión de Linux de un archivo DLL, 3 ejecutables c ++ y un proyecto pydev python)

Revisé todo el código de una nueva máquina, y se compila bien, pero tenía numerosos "errores semánticos" en los códigos std-c y std-C ++ e incluye ... Revisé todos los ajustes de descubrimiento / indexador inútilmente.

==> borrar toda la carpeta .metadata solucionó esto.

Como no tenía nada no trivial configurado en el espacio de trabajo (todo en los archivos de proyecto / makefiles), eclipse creó felizmente un espacio de trabajo nuevo, y simplemente tuve que hacer un archivo-> importar-> proyectos existentes


prueba esto:

Preferencias -> c / c ++ -> Indexador -> Indexar todas las variantes de encabezado

Marque esta opción.


Usé #pragma una vez en mi código. Esta configuración me hizo tener el problema:

--- fileA.h ---

#pragma once #define MYMACRO(X) func(X)

--- archivoB.h ---

#include "fileA.h"

--- fileB.cpp ---

#include "fileB.h" MYMACRO(5) <---- warning here

Reemplacé #pragma una vez con #ifndef #define HEADER_FILE_H #endif, y eso solucionó el problema.


Ventana -> Preferencias -> C / C ++ -> Análisis de código -> Sintaxis y errores semánticos: OFF

Esto no resolverá la causa del problema, pero al menos evitará que se muestren los errores falsos.