5

私は emacs cedet ユーザーです。私はセデットから大きな助けを得ました。

しかし、cedet の #ifdef 処理でエラーが発生しました。それがcedetの内部または私の設定ミスによるものかどうかはわかりません。この問題が発生する 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) または他の cede-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 セマンティック関数はうまく機能します。

これについて何か考えはありますか?それはcedetパーサーの問題からですか?

cedet で設定しなければならない点がある場合は、洞察を教えていただけますか?

ありがとう

4

2 に答える 2

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")

お役に立てれば。

于 2013-07-21T14:49:21.430 に答える