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