2012-01-04 53 views
0

我配置我的cedet幾乎與http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html一樣。Cedet無法正確解析time.h下的/ usr/include

感謝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,結構file是正確的,但語義發現結構TM在wchar.h,而不是在time.h。 問題似乎是wchar.h中的前向聲明struct tm

+0

這聽起來像是應該向Emacs或CEDET團隊報告的錯誤,而不是一個問題。 – 2012-01-04 13:46:46

+0

不確定其他人是否有同樣的問題,或只是一些配置需要 – cutemiex 2012-01-04 14:23:23

回答

1

在我的time.h副本中,似乎符號__BEGIN_NAMESPACE_STD顯示在結構聲明的前面,並且正在弄錯解析器。您可以通過將__END_NAMESPACE_STD添加到變量semantic-lex-c-preprocessor-symbol-map作爲映射爲空來快速修復該問題。然後刪除與time.h相關的semanticdb緩存文件(在〜/ .semanticdb中),或刪除/ usr/include中的所有內容,然後重新啓動emacs。 time.h應該被重新編譯,並且事情應該在time.h之後工作正常,除非你想使用std :: tm或者其他東西。

+0

謝謝,埃裏克。但即使我添加了兩個符號並重建了smeanticdb,但找不到合適的位置。我還發現符號__BEGIN_NAMESPACE_STD似乎對解析器沒有影響,因爲它幾乎出現在每個聲明之前。 – cutemiex 2012-02-20 14:17:44