2010-06-25 12 views
26

Estoy usando Eclipse para trabajar en algo de código C y que no es la indexación de código dentro de bloques de compilación condicional como esto:¿Cómo puedo obtener Eclipse de código de índice en el interior #ifdef .... #endif

#ifdef USE_FEATURE_A 
int feature_a(...) { 
    some = code(here); 
} 
#endif 

¿Cómo puedo obtener eclipse para indexar la función feature_a?

+0

¿Quiere decir sangría? – IntelliChick

+0

índice para que funcionen funciones como 'saltar a definición' y jerarquía de llamadas. –

Respuesta

27

Usted podría decir a eclipse que se define USE_FEATURE_A. Abra las propiedades de su proyecto y vaya a la página "C/C++ General-> Rutas y símbolos", en la pestaña "Símbolos", haga clic en el botón "Agregar" y escriba USE_FEATURE_A en el campo de nombre y haga clic en Aceptar.

Nota: Esto hará que no indexe ningún lado de #else a sus elementos del preprocesador ... así que a menos que sean todos como el en cuestión, no puede AFAIK, pero si son ellos está bien. (Eclipse contiene un preprocesador C que usa para analizar su código, todo lo que se muestra arriba es esencialmente lo mismo que agregar -DUSE_FEATURE_A a su línea de comando para que el preprocesador de Eclipse se comporte de manera diferente a la del compilador)

+3

¡Muchas gracias por esto, literalmente me devolviste horas de mi vida! –

+1

Sí, esa es una solución, pero está lejos de ser "fácil de usar". Este es un problema importante para mí. No es práctico recorrer todo el código (especialmente para el código de otros) y buscar todos los símbolos y luego agregarlos a las propiedades del proyecto. No entiendo por qué Eclipse no puede tener una casilla de verificación que nos permita deshabilitar el preprocesador para fines de indexación/referencia ... Comparado con Visual Slick (que yo y mis colegas usaron anteriormente), esta es una gran desventaja de Eclipse. (Versión C/C++). – Rex

+1

el único problema es que puede haber varias definiciones para esto. me refiero a varios ... – Vetras

1

Por lo que es vale la pena, obtener eclipse para analizar el código compilado condicionalmente es mucho más difícil de lo que parece a primera vista. Encontré un artículo sobre IBM de 2007 donde dijeron que priorizarán para el "próximo lanzamiento".

Handling Conditional Compilation in CDT's Core

+0

gracias por esa información. Era lo que estaba buscando. Básicamente, aparte de la respuesta de Spudd86, no hay forma de obtener eclipse para procesar este código. – Vetras

1

tenía este mismo problema, pero el código condicional eliminado por el procesamiento previo era perfectamente válido código C y quería que el formato ... Este fue mi solución:

1) hallazgo Global/reemplazar de #if a #JUNKif

2) Ctrl-Shift-F para reformatear la fuente

3) Otra búsqueda global/sustitución de #JUNKif a #IF

2

Esta es una solución más elegante más fácil y en mi opinión a la seleccionada como la solución:

Si alguien tiene el mismo problema (ya que tenía), esto se puede (? Ahora) ser fácilmente resuelto por ir a Ventana-> Preferencia-> C/C++/Indizador y habilite "Indexar todas las variantes de encabezado". A continuación, haga clic en Proyecto-> indexador C/C++-> reconstruir y limpiar y crear su proyecto. Esto debería resolver todos los errores que se originan de los comandos del preprocesador.

0

Una forma de indexar el código en el indicador en Eclipse (Kepler) c/C++ Editor.

Puede habilitar los indicadores de compilación en el editor de Eclipse para que el código debajo de ellos pueda indexarse.

Propiedades> preprocesador incluyen rutas> Configuración de usuario CDT entradas de

Haga clic en AÑADIR y añadir el preprocesador de las macros y puede especificar su valor.

0

La mejor manera, supongo, es usar la opción Indizador: Propiedades del proyecto> C/C++ General> Indizador. Puede seleccionar Habilitar configuración específica del proyecto Prefiero elegir "Usar configuración de compilación activa" para que todos los archivos que están realmente integrados en el proyecto estén indexados. De todos modos también puede optar por indexar todos los archivos del proyecto, incluso si no están incluidos en la compilación ...

Cuestiones relacionadas