Pregunta

Aquí un código para demostrar un problema molesto:

class A {
public:
    A():
        m_b(1),
        m_a(2)
        {}
private:
    int m_a;
    int m_b;
};

Esta es una salida en la vista Consola :

make all 
Building file: ../test.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"test.d" -MT"test.d" -o"test.o" "../test.cpp"
../test.cpp: In constructor 'A::A()':
../test.cpp:9: warning: 'A::m_b' will be initialized after
../test.cpp:8: warning:   'int A::m_a'
../test.cpp:3: warning:   when initialized here
Finished building: ../test.cpp

El problema es que en la vista Problemas veré 3 advertencias separadas (líneas en la salida que contienen la palabra de advertencia), mientras que de hecho hay 4 líneas en la salida que describen un problema.

¿Hay algo que me falta?

Pregunta adicional. Tal vez esté en el espíritu de Eclipse, pero ¿hay alguna manera de hacer que la vista de Consola sea clicable como lo hace la mayoría de IDE (por ejemplo, Visual Studio, emacs ...)

Gracias Dima

¿Fue útil?

Solución

Según el último comentario sobre este informe de error debería poder hacer clic en la vista de consola para saltar al código en CDT 7.0.

Puede valer la pena revisar las compilaciones de hitos para ver si la agrupación de mensajes de error es mejor. Si no se genera un error para intentar agrupar mensajes relacionados, sería una buena idea.

Otros consejos

Hay varias líneas en la advertencia porque cada línea se refiere a una línea de código diferente. El problema que se advierte es qué está sucediendo en el m_b que se declara en la línea 9, es porque del hecho de que m_a en la línea 8 se declara antes que m_b , pero es causado por lo que sucede en su lista de inicializadores, que comienza en la línea 3.

Con gcc es posible que las advertencias que no están relacionadas entre sí aparezcan una tras otra (es decir, un montón de cosas no relacionadas que están mal en main ), por lo que Eclipse no puede ver del resultado, ya sean advertencias separadas o todas relacionadas con el mismo problema.

Los campos se inicializan en el orden en que se declaran en la clase. El compilador lo está ayudando diciéndole que el constructor se está inicializando en el orden incorrecto. Esto puede causar errores extraños, si el orden de inicialización es importante.

Supongo que es porque CDT todavía es un poco inmaduro y probablemente no pueda analizar la salida de g ++ de la mejor manera posible. La línea ../test.cpp: en el constructor 'A :: A ()': no contiene un número de línea, por lo que CDT no puede colocar un marcador de error en test.cpp editor y probablemente este problema afecta a la vista Problemas .

Hay más problemas con la vista Problemas . Por ejemplo, puede eliminar solo los errores visibles de la vista, por lo que si obtiene más de 100 elementos predeterminados, debe eliminarlos secuencialmente cien por cien. Además, los errores no se eliminan automáticamente después de la limpieza, si se produjo un error dentro del archivo de encabezado independiente. Solo sea indulgente, están mejorando CDT de una versión a otra.

Pregunta adicional: ¿qué quiere decir con "hacer que la vista de consola sea cliqueable"?

Gracias David, pero creo que es posible que me hayas entendido mal. Me refería al hecho de que la vista 'Problemas' en eclipse ordena los errores del compilador alfabéticamente por defecto. Como Dima decía, esto causa problemas con los mensajes de error de gcc que se extienden en dos líneas, como

  1. error: 'tal y tal' está protegido
  2. dentro de este contexto

ya que todas las líneas 'dentro de este contexto' se separan de la variable a la que se refieren.

SIN EMBARGO, acabo de encontrar la opción de cambiar el orden de clasificación de los errores del compilador, el pequeño triángulo que apunta hacia abajo en la parte superior de la vista (solo funcionó aquí es donde configura las opciones para la vista ya que soy nuevo eclipsar). Si juegas con esto, ayudará, pero aún no podrás evitar que los errores en el mismo archivo se mezclen (¿por qué no hay una opción, simplemente dejarlos como estaban?)

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