2011-08-28 9 views
5

Soy un usuario de emacs cedet. recibí una gran ayuda de cedet.problema de análisis de cedet en #ifdef

pero, encontré algunos errores de procesamiento #ifdef manipulación en cedet. no estoy seguro de que sea de cedet interno o de mi configuración errónea. Cito un código en Curl donde ocurre este problema.

#ifdef CURL_DO_LINEEND_CONV 
    if((data->set.crlf) || (data->set.prefer_ascii)) { 
#else 
    if(data->set.crlf) { 
#endif /* CURL_DO_LINEEND_CONV */ 
    endofline_native = "\n"; 

Con este código, debe haber coincidencia entre paréntesis. Porque obtuve errores al usar (eassist-list-methods) u otras funciones semánticas de cedet (saltar a la definición).

Podría adivinar fácilmente que esto podría ser de dos llaves en el bloque #ifdef .. #endif. Contraté estos para que les gustara esto.

#ifdef CURL_DO_LINEEND_CONV 
    if((data->set.crlf) || (data->set.prefer_ascii)) 
#else 
    if(data->set.crlf) 
#endif /* CURL_DO_LINEEND_CONV */ 
{ 
    endofline_native = "\n"; 

después de esto, las funciones semantic de cedet funcionan bien.

¿Alguna idea de esto? ¿es del problema del analizador de cedet?

si tengo algún punto que configurar en cedet, ¿podría darme alguna idea?

gracias

+2

Por favor considerar la presentación de un informe de error: Mx informe-emacs -bug'. Los desarrolladores de Emacs determinarán si hay un problema o no. – Drew

+0

Por favor, también reporte el problema a la lista de correo de cedet-devel –

Respuesta

0

Este parece ser un problema que la fijación de semantic-lex-c-preprocessor-symbol-file podría resolver. De acuerdo con lo que he leído sobre CEDET, no solo expande cada macro de cualquier manera, sino solo aquellas definidas en semantic-lex-c-preprocessor-symbol-file. Por lo tanto, debe agregar el archivo, donde CURL_DO_LINEEND_CONV se define a esta lista. He aquí un ejemplo:

(add-to-list 'semantic-lex-c-preprocessor-symbol-file 
      "~/Software/deal.II/include/deal.II/base/config.h") 

Espero que esto ayude.

1

Un poco tarde a la fiesta, pero por si alguien todavía está luchando con esto, añada la línea siguiente al de su emacs archivo init:

(setq semantic-c-obey-conditional-section-parsing-flag nil)