我使用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
中有一个前瞻性声明。
答案 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或其他东西。