2011-08-28 12 views
5

私はemacs cedetユーザーです。私は刑務所から大きな助けを得ました。#ifdefのcedet解析の問題

しかし、私はcedetで#ifdefを処理する際にいくつかのエラーを検出しました。 内部または私の構成が間違っているかどうかはわかりません。 この問題が発生したCurlでコードを引用します。

#ifdef CURL_DO_LINEEND_CONV 
    if((data->set.crlf) || (data->set.prefer_ascii)) { 
#else 
    if(data->set.crlf) { 
#endif /* CURL_DO_LINEEND_CONV */ 
    endofline_native = "\n"; 

このコードでは、誤った括弧が一致する必要があります。なぜなら(eassist-list-methods)や他のcedet-semantic関数(定義にジャンプ)を使ってエラーが発生したからです。

これは#ifdef .. #endifブロックの2つの中カッコからのものかもしれません。 私はこれをこのように請け負った。

#ifdef CURL_DO_LINEEND_CONV 
    if((data->set.crlf) || (data->set.prefer_ascii)) 
#else 
    if(data->set.crlf) 
#endif /* CURL_DO_LINEEND_CONV */ 
{ 
    endofline_native = "\n"; 

この後、cedet意味関数はうまく機能します。

これについてのご意見はありますか?枢機卿のパーサーの問題からですか?

私は枢軸軍で構成する必要がある場合は、いくつかの洞察力を与えることができますか?

おかげ

+2

バグレポートを提出ご検討ください-bug'。 Emacsの開発者は、問題があるかどうかを判断します。 – Drew

+0

cedet-develメーリングリストにも問題を報告してください –

答えて

0

これはsemantic-lex-c-preprocessor-symbol-file が解決できる問題設定のように思えます。 私がCEDETについて読んだところによると、すべてのマクロを展開するだけではなく、 はワイルドリーになりますが、semantic-lex-c-preprocessor-symbol-fileで定義されたものだけが展開されます。 ファイルを追加する必要があります。CURL_DO_LINEEND_CONVがこのリストに定義されています。ここで は例です:

(add-to-list 'semantic-lex-c-preprocessor-symbol-file 
      "~/Software/deal.II/include/deal.II/base/config.h") 

は、この情報がお役に立てば幸いです。

少し遅れて相手に
1

が、場合には、誰もがまだあなたのemacsにはinitファイルに次の行を追加し、これに苦労している: `のMxレポート-emacsの:

(setq semantic-c-obey-conditional-section-parsing-flag nil)