Cedet无法正确解析/ usr / include下的time.h

时间:2012-01-04 13:40:10

标签: emacs cedet emacs-semantic

我使用http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html配置了我的cedet几乎相同。

感谢alexott,大部分时间它运行良好,但我发现它无法很好地解析/usr/include/time.h中的tm结构。

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

使用M-x semantic-ia-fast-jump时,struct FILE是正确的,但语义在wchar.h中找到struct tm,而不在time.h中。 问题似乎是wchar.h struct tm中有一个前瞻性声明。

1 个答案:

答案 0 :(得分:1)

在我的time.h副本中,似乎符号__BEGIN_NAMESPACE_STD出现在struct声明的前面,并且正在迷惑解析器。只需将变量__END_NAMESPACE_STD添加到变量semantic-lex-c-preprocessor-symbol-map,映射为空即可快速解决问题。然后删除与time.h相关的semanticdb缓存文件(在〜/ .semanticdb中),或者只删除/ usr / include中的所有内容,然后重新启动emacs。 time.h应该得到解析,然后事情应该适用于time.h之后...除非你想使用std :: tm或其他东西。