Pregunta

Eclipse CDT proporciona dos indexadores para código C/C++ (Preferencias > C/C++ > Indexador).¿Alguien sabe cuál es la diferencia exacta entre estos dos?

El archivo de ayuda no es exactamente esclarecedor:

"CDT admite la contribución de indexadores adicionales, con 2 indexadores que se proporcionan con la versión predeterminada de CDT:

  • Indexador rápido de C/C++:Proporciona capacidades de indexación más rápidas, tanto declaraciones como información de referencia cruzada.Este es el indexador recomendado.

  • Indexador C/C++ completo:Proporciona capacidades de indexación aún más precisas a costa del rendimiento, tanto declaraciones como información de referencia cruzada ".

¿Qué significa ser más? preciso:¿Indiza más cosas y, de ser así, cuáles?

¿Fue útil?

Solución

A continuación es un extracto de la página CDT describiendo su análisis e indexación ( CDT / diseños / Visión general de analizar ). Se da una descripción bastante buena de lo que son las diferencias y en el que el controlador paso a paso rápido puede fallar:

  

de análisis y resolución de unión es un   proceso lento, este es un problema   debido a que el usuario espera que la edición de código   características tales como el contenido de aportación que debe   rápido. Por esta razón las tiendas CDT   información de la unión en un disco de   caché llamado “índice” o “la PDom”   (Modelo de objetos persistentes de documentos) en   con el fin de ser capaz de proporcionar características   que responden rápidamente a las peticiones de los usuarios.

     

La construcción del índice implica el análisis sintáctico   todo el código en un proyecto, resolver   todos los enlaces y escribir los   enlaces con el índice. El índice es   luego se actualiza de forma incremental cada vez   el usuario edita un archivo.

     

Las versiones anteriores de CDT soporte de tres   diferentes modos de indexación, rápido   indexación, indexación completa y sin   indexación. La configuración por defecto es   el indexador rápido porque la indexación de una   proyecto grande puede ser una pérdida de tiempo   proceso. La diferencia entre el   indexadores rápida y completa es que la   indexador rápida se saltará archivos de cabecera   que ya se han analizado una vez,   mientras que el indexador completa será siempre   volver a analizar un archivo de cabecera cada vez que se   está incluido. Sin embargo, es importante   entender que el indexador completa,   a pesar de su nombre, todavía no es totalmente   exacta.

     

Cuando un archivo de cabecera se incluye en una   archivo de origen que está sujeta a ningún   macros que se han definido en ese   punto. Algunas de las cabeceras de la biblioteca usan macros   en conjunción con preprocesador   condicionales (#ifdefs) a parcialmente   incluir un archivo de cabecera. A veces, tales   un archivo de cabecera se incluye más de   una vez en un proyecto, en caso de que las macros   la cabecera depende son diferentes   cada vez que la cabecera se incluye a continuación,   diferentes partes de la cabecera pueden ser   incluido en diferentes archivos de origen.   Ni indexador será precisa en   este escenario, ya que sólo   índice de la cabecera de la primera vez que se   encontrado.

     cabeceras

El indexador completo será re-análisis sintáctico   que ya ha encontrado, pero   no va a volver a indexar ellos. Por lo tanto   archivos de origen que incluyen una cabecera puede   ser analizada con mayor precisión, pero la   Header en sí sólo se ordenará la   una vez. El indexador completa es mucho   más lento que el indexador rápido porque   del análisis adicional que hace, pero   es sólo ligeramente más precisa. por   esta razón, el indexador no es completa   recomendado y ha sido retirado de   la versión actual del CDT.

     

Cada proyecto tiene un único PDom   asociado a ello. El PDom se almacena   en el disco como un archivo binario plana. los   indexador sólo se cabeceras de índice que   están incluidos en los archivos de origen, por lo que si   hay un archivo .h en el proyecto que   no está siendo incluido por cualquier .c o   archivo .cpp, entonces normalmente no va a conseguir   indexado. Sin embargo hay una preferencia   estableciendo para indexar todos los archivos en el   proyecto.

Otros consejos

Creo que siempre reparses cualquier encontrado / incluidos archivos sin necesidad de "caching". La razón de que si el contenido de los archivos podrían depender de las definiciones de preprocesador por lo que siempre se reparsed. analizador rápido asume que nada ha cambiado desde que se encontró por primera vez el archivo.

(pero podría estar equivocado)

  

¿Alguien sabe cuál es la diferencia exacta entre estos dos?

En mi experiencia, sobre el montón de 32 MB.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top