Cedet не может правильно проанализировать time.h в / usr / include - PullRequest
0 голосов
/ 04 января 2012

Я настроил свой cedet почти так же, как http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html.

Спасибо, alexott, большую часть времени он работает хорошо, но я обнаружил, что он не может хорошо анализировать структуру tm в / usr / include / time.h.

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void){
    struct tm times;
    FILE file;
}

При использовании M-x semantic-ia-fast-jump структура FILE правильная, но семантическая находит структуру tm в wchar.h, а не в time.h.Кажется, проблема в том, что в wchar.h есть предварительное объявление для struct tm.

1 Ответ

1 голос
/ 18 января 2012

В моей копии time.h, кажется, что символ __BEGIN_NAMESPACE_STD появляется перед объявлением структуры и вводит в заблуждение синтаксический анализатор. Вы можете быстро это исправить, просто добавив это и __END_NAMESPACE_STD к переменной semantic-lex-c-preprocessor-symbol-map в качестве отображения на пустое. Затем удалите файлы кэша semanticdb (в ~ / .semanticdb), связанные с time.h, или просто все в / usr / include, и перезапустите emacs. time.h должен быть обработан повторно, и после этого все должно работать нормально для time.h ... если вы не хотите использовать std :: tm или что-то еще.

...