0

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;
}

を使用する場合、構造体 FILE は正しいですが、セマンティックではではなく でM-x semantic-ia-fast-jump構造体 tm が検出されます。問題は、 の前方宣言があるようです。wchar.htime.hwchar.hstruct tm

4

1 に答える 1

1

私の time.h のコピーでは、シンボル__BEGIN_NAMESPACE_STDが構造体宣言の前に表示され、パーサーを混乱させているようです。__END_NAMESPACE_STDそれを変数に追加するだけでsemantic-lex-c-preprocessor-symbol-map、空へのマッピングとしてすばやく修正できます。次に、time.h に関連するセマンティック データベース キャッシュ ファイル (~/.semanticdb 内) を削除するか、/usr/include 内のすべてを削除し、emacs を再起動します。time.h は再解析され、その後 time.h で問題なく動作するはずです... std::tm などを使用したくない場合を除きます。

于 2012-01-18T01:19:51.597 に答える