4

C++ と C ファイルを含むプロジェクトがあります。コードは正しくコンパイルおよび実行されますが、次のエラーを取り除く必要があります。

シンボル「ERANGE」を解決できませんでした

次の 2 つのファイル (Ubuntu の最新の x64 Elipse Juno) で再現できました。

main.h:

#ifndef MAIN_H_
#define MAIN_H_

extern "C" {
#include <errno.h>
}

#endif /* MAIN_H_ */

main.cpp:

#include <cerrno>
#include <cassert>
#include "main.h"

int main(int argc, char * argv[]) {
    assert(errno != ERANGE); // <-- CDT ERROR here
    return 0; }

ERANGEでOpen Declarationを正しく実行すると、/usr/include/asm-generic/errno-base.h ファイルに移動します。

同様の問題に対する次の回避策は機能しませんでした。

  • インデクサーの設定-> アクティブなビルド構成を使用
  • ERANGE シンボルをプロジェクトのパスとシンボルに手動で追加する
  • main.cpp を[設定] -> [C/C++] -> [コード分析] -> [シンボルが解決されない] -> [選択項目のカスタマイズ...] -> [スコープ] -> [除外パターン]に追加

機能する唯一の解決策は、シンボルが完全に解決されていないというエラーを無効にすることですが、実際の問題を見逃す原因になります。

編集: CDT バグ提出https://bugs.eclipse.org/bugs/show_bug.cgi?id=404017

4

1 に答える 1

0

Eclipse CDT コード分析ツール ( codan ) のバグのようです。ここにバグレポートを提出することをお勧めします。

于 2013-03-21T00:00:25.167 に答える