Configuré CDT para eclipse y escribí un programa simple de hola mundo en C:
#include <stdio.h>
int main(void){
puts("Hello, world.");
return 0;
}
El programa se compila y se ejecuta correctamente, pero eclipse sigue mostrando este signo de interrogación amarillo al lado de la declaración de inclusión que dice "Unresolved inclusion: <stdio.h>"
cuando coloco el mouse sobre él.
No afecta la ejecución del programa, pero lo encuentro bastante molesto.
¿Alguien tiene alguna idea de cómo eliminarlo?
c
eclipse
eclipse-cdt
standard-library
Derrick Zhang
fuente
fuente
Respuestas:
El compilador que Eclipse está usando es capaz de resolver bien los símbolos, por lo que el código se compilará bien.
Pero el código de finalización / indexador o preprocesador que utiliza Eclipse no sabe dónde
stdio.h
existe.Debe especificar la ruta del sistema de archivos donde
stdio.h
se encuentra.La documentación de Eclipse describe esto en varias secciones para el compilador:
Y si el código de finalización / indexador o preprocesador específicamente tampoco puede localizar
stdio.h
:La ubicación exacta de
stdio.h
dependerá del sistema para el que desee escribir el código. Si está escribiendo código para el mismo sistema en el que está ejecutando Eclipse, entonces la ubicación estándar es/usr/include/stdio.h
para Linux, macOS, Cygwin, etc.Si está realizando una compilación cruzada para un sistema de destino separado / remoto (por ejemplo, Android, Raspberry Pi, STM32), estará ubicado en algún lugar del SDK que instaló para ese sistema. Deberá consultar esa documentación SDK en particular.
fuente
Encontré estas respuestas (incluida la aceptada) algo crípticas.
Para mí, tuve que agregar la ruta donde se encuentra stdio.h (como dijo @ardnew). En Eclipse, abra las Propiedades de su proyecto, expanda "C / C ++ General" y seleccione "Rutas y símbolos".
Asegúrese de haber agregado el
include
directorio para cada idioma que esté usando. (En mi caso, solo necesitaba agregarlo a GNU C ++).fuente
/usr/bin/xcode-select --install
y luego podrá apuntar a Eclipse en/usr/include/
simplemente agregando a la base de conocimientos, acabo de hacer esto en win7 con cygwin.
esto es lo que parece funcionar para mí.
incluir rutas para c:
incluir rutas para c ++:
esto me da una compilación limpia de hola mundo.
fuente
Vaya a Proyecto> Propiedades> General de C / C ++> Incluye preprocesador> Proveedores y seleccione ambos:
Para cada uno de ellos, seleccione también la subentrada: "Utilizar proveedor global compartido entre proyectos".
Probado en Eclipse 4.8.0 en Ubuntu 16.04 con C y C ++ hello world.
fuente
Puede solucionar el problema. (Disculpe el mal inglés)
fuente
Estoy usando Eclipse con Cygwin y esto funcionó para mí:
Vaya a Proyecto> Propiedades> C / C ++ General> Incluye preprocesador ...> Proveedores y seleccione "Configuración del compilador integrado CDT GCC Cygwin [Compartido]".
fuente
Estoy trabajando con múltiples configuraciones de compiladores cruzados , donde necesito usar diferentes ubicaciones para los archivos de encabezado STD (y otras variables de entorno).
La solución fue configurar el indexador para que use la configuración activa.
Desafortunadamente, debido a algún error en eclipse , la opción no se almacena localmente, por lo que debe usar la configuración del espacio de trabajo si desea guardar la configuración cuando vuelva a abrir eclipse.
Ventana -> Preferencias -> C / C ++ -> Indexador -> Usar configuración de compilación activa
Esto hará que eclipse use el compilador correcto que está configurado con la configuración activa de Cross GCC del proyecto.
fuente
Como nota de las respuestas principales, es necesario especificar dónde se encuentran las carpetas de compilación, que se pueden agregar a través de un cuadro de diálogo al que se accede haciendo clic con el botón derecho en el proyecto y seleccionando Propiedades-> C / C ++ General-> Rutas y símbolos.
La pregunta restante es qué caminos deben agregarse.
Si ha configurado gcc correctamente para el acceso a la línea de comandos y necesita saber cuáles son las rutas de inclusión predeterminadas que utiliza, pregúntelo; según el idioma que le interese, utilice:
... esto mostrará la configuración predeterminada del compilador que se usa al invocar gcc (y este comando también funciona si "gcc" es realmente un alias para clang, como en OSX).
Hacia la parte inferior estará la lista de directorios incluidos:
Si ingresa los directorios enumerados aquí, en el orden enumerado, en el cuadro de diálogo de rutas y símbolos de Eclipse, Eclipse CDT debería poder encontrar los encabezados estándar y quizás algunos encabezados adicionales específicos de su sistema operativo.
(Gracias a la respuesta de devnull a una pregunta relacionada).
fuente
En ADT hice lo siguiente:
fuente
Normalmente, Eclipse debería poder resolver automáticamente los archivos de inclusión estándar. Lo hace llamando a gcc y preguntando su configuración. Lo más probable es que Eclipse no encuentre su gcc (o al menos no la versión que usa para compilar).
En lugar de especificar todas las rutas de inclusión estándar en la configuración del proyecto, probablemente desee asegurarse de que Eclipse encuentre gcc. Agregue el directorio donde se encuentra gcc a la variable de entorno PATH antes de iniciar Eclipse.
Si desea que diferentes proyectos utilicen diferentes compiladores, es posible que desee modificar las opciones de descubrimiento. Estos están ocultos de forma predeterminada, así que primero habilítelos desde Ventana> Preferencias> C / C ++> Configuración de páginas de propiedades> Mostrar la página "Opciones de descubrimiento". Luego, puede encontrarlos en C / C ++ Build> Discovery Options en las propiedades del proyecto.
fuente
Estoy usando CodeWarrior IDE basado en eclipse para proyectos incrustados y acabo de resolver este problema eliminando y agregando nuevamente las direcciones de origen a Project Properities-> C / C ++ General-> Path and Sybols-> Include Directories. Esto significa que hay muchas razones para aceptar el mensaje "Inclusión no resuelta:" y también hay muchas soluciones.
fuente
Un error que tuve al configurar Paths and Symbols es que inicialmente configuré las rutas de inclusión para un idioma diferente. Estoy trabajando con CDT y Cygwin gnu C ++. Por lo tanto, debe configurar símbolos y rutas en el lenguaje GNU C ++.
fuente
Además, ajuste
${COMMAND}
agcc
en LinuxDebajo:
Reemplazar:
con:
Si no hace esto, la salida estándar de Eclipse muestra:
y registros debajo de
${HOME}/eclipse-workspace/.metadata/.log
mostrar:porque
${COMMAND} ${FLAGS}
están vacíos, por lo que Eclipse intenta ejecutar lo-E
que viene a continuación.Me pregunto si podemos definir correctamente las variables
COMMAND
yFLAGS
en la configuración, pero intenté agregarlas como variables de compilación y no funcionó.Versión C ++ de la pregunta: ¿Cómo resolver "Inclusión no resuelta: <iostream>" en un archivo C ++ en Eclipse CDT?
Probado en Eclipse 2020-03 (4.15.0), Ubuntu 19.10 y este proyecto mínimo de Makefile con fuentes existentes .
fuente
¿Comprueba si se compila desde la línea de comandos? Para mí, ayuda en Linux, apt install libc-dev.
fuente